Creating a Window
From Rosetta Code
Programming Task
This is a programming task. It lays out a problem which Rosetta Code users are encouraged to solve, using languages they know.
Contents |
[edit] Ada
Library: GTK+
Library: GtkAda
with Gtk.Window; use Gtk.Window; with Gtk.Widget; use Gtk.Widget; with Gtk.Handlers; with Gtk.Main; procedure Windowed_Application is Window : Gtk_Window; package Handlers is new Gtk.Handlers.Callback (Gtk_Widget_Record); package Return_Handlers is new Gtk.Handlers.Return_Callback (Gtk_Widget_Record, Boolean); function Delete_Event (Widget : access Gtk_Widget_Record'Class) return Boolean is begin return False; end Delete_Event; procedure Destroy (Widget : access Gtk_Widget_Record'Class) is begin Gtk.Main.Main_Quit; end Destroy; begin Gtk.Main.Init; Gtk.Window.Gtk_New (Window); Return_Handlers.Connect ( Window, "delete_event", Return_Handlers.To_Marshaller (Delete_Event'Access) ); Handlers.Connect ( Window, "destroy", Handlers.To_Marshaller (Destroy'Access) ); Show (Window); Gtk.Main.Main; end Windowed_Application;
[edit] C
Works with: ANSI C version C89
Works with: gcc version 4.0.3
Library: SDL
Compile Command: gcc `sdl-config --cflags` `sdl-config --libs` SDL_Window.c -o window
/*
* Opens an 800x600 16bit color window.
* Done here with ANSI C.
*/
#include <stdio.h>
#include <stdlib.h>
#include "SDL.h"
int main()
{
SDL_Surface *screen;
if (SDL_Init(SDL_INIT_VIDEO) != 0) {
fprintf(stderr, "Unable to initialize SDL: %s\n", SDL_GetError());
return 1;
}
atexit(SDL_Quit);
screen = SDL_SetVideoMode( 800, 600, 16, SDL_SWSURFACE | SDL_HWPALETTE );
return 0;
}
Library: GTK
Compile command: gcc `gtk-config --cflags` `gtk-config --libs` -o window window.c
#include <gtk/gtk.h>
int
main(int argc, char *argv[])
{
GtkWidget *window;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_signal_connect(GTK_OBJECT(window), "destroy",
GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
gtk_widget_show(window);
gtk_main();
return 0;
}
Library: Gtk2
Compile command: gcc -Wall -pedantic `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0` -o window window.c
#include <gtk/gtk.h>
int
main(int argc, char *argv[])
{
GtkWidget *window;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect (window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_widget_show(window);
gtk_main();
return 0;
}
[edit] C++
Library: Qt
4
Compiler command: qmake -pro; qmake
#include <QApplication>
#include <QMainWindow>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QMainWindow window;
window.show();
return app.exec();
}
Library: Gtk+
Compiler command: g++ filename.cc -o test `pkg-config --cflags --libs gtkmm-2.4`
#include <iostream>
#include <gtkmm.h>
int
main( int argc, char* argv[] )
{
try
{
Gtk::Main m( argc, argv ) ;
Gtk::Window win ;
m.run( win ) ;
}
catch( std::exception const & exc )
{
std::cout << exc.what() << std::endl ;
exit( -1 ) ;
}
exit( 0 ) ;
}
[edit] C#
Works with: Visual C# version 2003
Library: System.Windows.Forms
using System;
using System.Windows.Forms;
public class Window
{
[STAThread]
static void Main()
{
Form newForm = new Form();
newForm.Text = "It's a new Window!";
newForm.Show();
}
}
[edit] D
Library: FLTK4d
module Window;
import fltk4d.all;
void main() {
auto window = new Window(300, 300, "A window");
window.show;
FLTK.run;
}
Library: Derelict
Library: SDL
import derelict.sdl.sdl;
int main(char[][] args)
{
DerelictSDL.load();
SDL_Event event;
auto done = false;
SDL_Init(SDL_INIT_VIDEO);
scope(exit) SDL_Quit();
SDL_SetVideoMode(1024, 768, 0, SDL_OPENGL);
SDL_WM_SetCaption("My first Window", "SDL test");
while (!done)
{
if (SDL_PollEvent(&event) == 1)
{
switch (event.type)
{
case SDL_QUIT:
done = true;
break;
default:
break;
}
}
}
return 0;
}
Library: QD
QD is a simple and easy-to-use wrapper around SDL.
import qd;
void main() {
screen(640, 480);
while (true) events();
}
[edit] E
[edit] Java AWT/Swing
Works with: E-on-Java
when (currentVat.morphInto("awt")) -> {
def w := <swing:makeJFrame>("Window")
w.setContentPane(<swing:makeJLabel>("Contents"))
w.pack()
w.show()
}
[edit] Groovy
import groovy.swing.SwingBuilder new SwingBuilder().frame(title:'My Window', size:[200,100]).show()
[edit] IDL
With some example values filled in:
Id = WIDGET_BASE(TITLE='Window Title',xsize=200,ysize=100) WIDGET_CONTROL, /REALIZE, id
[edit] J
A minimalist modal dialog:
title=:'"Hamlet -- Act 3, Scene 1"' text=:'"To be, or not to be: that is the question:"' wd 'mb ',title,text
A free-standing window:
MINWDW=: 0 : 0 pc minwdw; pas 162 85;pcenter; rem form end; ) minwdw_run=: 3 : 0 wd MINWDW wd 'pshow;' ) minwdw_close=: 3 : 0 wd'pclose' ) minwdw_run ''
[edit] Java
Library: Swing
import javax.swing.JFrame;
import javax.swing.WindowConstants;
public class SimpleWindow {
public static void main(String[] args) {
JFrame window = new JFrame("This is a title!");
window.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
window.setSize(800, 600);
window.setVisible(true);
}
}
[edit] JavaScript
window.open("webpage.html", "windowname", "width=800,height=600");
[edit] mIRC Scripting Language
Works with: mIRC
Switches: C = Center Window p = Picture Window d = Desktop Window
alias CreateMyWindow {
.window -Cp +d @WindowName 600 480
}
[edit] Perl
Works with: Perl version 5.8.8
Library: Tk
use Tk; MainWindow->new(); MainLoop;
Library: SDL
use SDL::App;
use SDL::Event;
$app = SDL::App->new;
$app->loop({
SDL_QUIT() => sub { exit 0; },
});
Library: GTK
use Gtk '-init';
$window = Gtk::Window->new;
$window->signal_connect(
'destroy' => sub { Gtk->main_quit; }
);
$window->show_all;
Gtk->main;
Library: Gtk2
use Gtk2 '-init';
$window = Gtk2::Window->new;
$window->signal_connect(
'destroy' => sub { Gtk2->main_quit; }
);
$window->show_all;
Gtk2->main;
[edit] Python
Works with: Python version 2.4 and 2.5
Library: Tkinter
import Tkinter w = Tkinter.Tk() w.mainloop()
Library: wxPython
from wxPython.wx import *
class MyApp(wxApp):
def OnInit(self):
frame = wxFrame(NULL, -1, "Hello from wxPython")
frame.Show(true)
self.SetTopWindow(frame)
return true
app = MyApp(0)
app.MainLoop()
Library: Pythonwin
import win32ui from pywin.mfc.dialog import Dialog d = Dialog(win32ui.IDD_SIMPLE_INPUT) d.CreateWindow()
Library: PyGTK
import gtk window = gtk.Window() window.show() gtk.main()
[edit] RapidQ
create form as qform
center
width=500
height=400
end create
form.showModal
[edit] Ruby
Works with: Ruby version 1.8.5
Library: Tk
require 'tk' window = TkRoot::new() window::mainloop()
Library: GTK+
require 'gtk2' window = Gtk::Window.new.show Gtk.main
[edit] Tcl
Loading the "Tk" package is all that is required to get an initial window:
package require Tk
If you need an additional window:
toplevel .top
If you are using the increasingly popular tclkit under MS Windows, all you have to do is associate the tcklkit with the extension ".tcl" and then create an empty file with the name (e.g.) nothing.tcl. Douple-clicking that will "open a window" (an empty one).
[edit] Toka
Library: SDL
Toka does not inherently know about graphical environments, but can interact with them using external libraries. This example makes use of the SDL library bindings included with Toka.
needs sdl 800 600 sdl_setup
[edit] Visual Basic .NET
Dim newForm as new Form
newForm.Text = "It's a new window"
newForm.Show()
Categories: Less Than 20 Examples | Programming Tasks | GUI | Ada | GTK+ | GtkAda | C | SDL | GTK | Gtk2 | C++ | Qt | Gtk+ | C sharp | System.Windows.Forms | D | FLTK4d | Derelict | QD | E | Groovy | IDL | J | Java | Swing | JavaScript | MIRC Scripting Language | Perl | Tk | Python | Tkinter | WxPython | Pythonwin | PyGTK | RapidQ | Ruby | Tcl | Toka | Visual Basic .NET

