Window creation: Difference between revisions

→‎{{header|PureBasic}}: expanding the task
(→‎{{header|Go}}: added SDL version)
(→‎{{header|PureBasic}}: expanding the task)
 
(163 intermediate revisions by 83 users not shown)
Line 6:
{{libheader|GtkAda}}
{{uses from|library|GtkAda|component1=Window|component2=Widget|component3=Handlers|component4=Main}}
<langsyntaxhighlight lang="ada">with Gtk.Window; use Gtk.Window;
with Gtk.Widget; use Gtk.Widget;
 
Line 46:
 
Gtk.Main.Main;
end Windowed_Application;</langsyntaxhighlight>
 
=={{header|ALGOL 68}}==
{{libheader|GTK}}
{{works with|ELLA ALGOL 68|[https://sourceforge.net/projects/algol68/files/algol68toc/algol68toc_1.14 algol68toc_1.14]}}
'''Compile command:''' ca -l gtk-3 -l gdk-3 -l atk-1.0 -l gio-2.0 -l pangocairo-1.0 -l gdk_pixbuf-2.0 -l cairo-gobject -l pango-1.0 -l cairo -l gobject-2.0 -l glib-2.0 firstgtk.a68
<syntaxhighlight lang="algol68">PROGRAM firstgtk CONTEXT VOID
USE standard
BEGIN
MODE GDATA = REF BITS;
MODE GUINT = BITS;
MODE GSIZE = BITS;
MODE GTYPE = GSIZE;
MODE GTYPECLASS = STRUCT(GTYPE g type);
MODE GTYPEINSTANCE = STRUCT(REF GTYPECLASS g class);
MODE GTKWIDGETPRIVATE = REF BITS;
 
MODE GOBJECT = STRUCT(
GTYPEINSTANCE g type instance,
GUINT ref count,
REF GDATA qdata);
 
MODE GTKWIDGET = STRUCT(
GOBJECT parent instance,
REF GTKWIDGETPRIVATE priv);
 
PROC(REF INT,REF CCHARPTRPTR)VOID gtk init = ALIEN "GTK_INIT"
"#define GTK_INIT(argc,argv) gtk_init(argc,argv)";
PROC(INT)REF GTKWIDGET gtk window new = ALIEN "GTK_WINDOW_NEW"
"#define GTK_WINDOW_NEW(type) (void *)gtk_window_new(type)";
PROC(REF GTKWIDGET)VOID gtk widget show = ALIEN "GTK_WIDGET_SHOW"
"#define GTK_WIDGET_SHOW(widget) gtk_widget_show((void *)widget)";
PROC gtk main = VOID: CODE "gtk_main();";
 
INT gtk window toplevel = 0;
FILE argf;
REF GTKWIDGET window;
 
open(argf,"",arg channel);
gtk init(argc,argv);
window:=gtk window new(gtk window toplevel);
gtk widget show(window);
gtk main
END
FINISH</syntaxhighlight>
 
 
=={{header|AmigaBASIC}}==
 
<syntaxhighlight lang="amigabasic">WINDOW 2,"New Window"</syntaxhighlight>
 
=={{header|AurelBasic}}==
<syntaxhighlight lang="aurelbasic">WIN 0 0 400 300 "New Window"</syntaxhighlight>
 
=={{header|AutoHotkey}}==
<langsyntaxhighlight AutoHotkeylang="autohotkey">Gui, Add, Text,, Hello
Gui, Show</langsyntaxhighlight>
 
=={{header|AutoIt}}==
<syntaxhighlight lang="autoit">GUICreate("Test")
GUISetState(@SW_SHOW)
 
Do
Switch GUIGetMsg()
Case -3 ; $GUI_EVENT_CLOSE
Exit
EndSwitch
Until False</syntaxhighlight>
 
=={{header|BaCon}}==
BaCon includes a Highlevel Universal GUI abstraction layer (HUG). The implementation is based on GTK.
 
<syntaxhighlight lang="freebasic">REM empty window
INCLUDE "hug.bac"
 
mainwin = WINDOW("Rosetta Code empty", 400, 300)
 
REM start gtk event loop...
DISPLAY</syntaxhighlight>
 
 
=={{header|BASIC256}}==
BASIC256 it has a built-in graphics mode.
<syntaxhighlight lang="basic256">clg
text (50,50, "I write in the graphics area")</syntaxhighlight>
 
=={{header|BBC BASIC}}==
{{works with|BBC BASIC for Windows}}
<syntaxhighlight lang="bbcbasic"> INSTALL @lib$+"WINLIB2"
dlg% = FN_newdialog("GUI Window", 0, 0, 200, 150, 8, 1000)
PROC_showdialog(dlg%)</syntaxhighlight>
 
=={{header|C}}==
Line 62 ⟶ 148:
 
'''Compile Command:''' gcc `sdl-config --cflags` `sdl-config --libs` SDL_Window.c -o window
<langsyntaxhighlight lang="c">/*
* Opens an 800x600 16bit color window.
* Done here with ANSI C.
Line 83 ⟶ 169:
return 0;
}</langsyntaxhighlight>
 
===GTK===
Line 91 ⟶ 177:
'''Compile command:''' gcc `gtk-config --cflags` `gtk-config --libs` -o window window.c
 
<langsyntaxhighlight lang="c">#include <gtk/gtk.h>
 
int
Line 106 ⟶ 192:
 
return 0;
}</langsyntaxhighlight>
 
===GTK2===
Line 113 ⟶ 199:
'''Compile command:''' gcc -Wall -pedantic `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0` -o window window.c
 
<langsyntaxhighlight lang="c">#include <gtk/gtk.h>
 
int
Line 127 ⟶ 213:
 
return 0;
}</langsyntaxhighlight>
 
===GLUT===
Line 139 ⟶ 225:
We ''are'' registering a keypress callback, which isn't strictly necessary; It simply allows us to use a keypress to close the program rather than depending on the windowing system the program is run under.
 
<langsyntaxhighlight lang="c">// A C+GLUT implementation of the Creating a Window task at Rosetta Code
// http://rosettacode.org/wiki/Creating_a_Window
#include <stdlib.h>
Line 180 ⟶ 266:
}
 
</syntaxhighlight>
</lang>
 
=={{header|C sharp|C#}}==
 
{{libheader|Windows Forms}}
{{uses from|library|.NET Framework|component1=System.Windows.Forms|component2=System.Windows.Forms.Window|component3=System.Windows.Forms.Form|component4=System.Windows.Forms.Application}}
<syntaxhighlight lang="csharp">using System;
using System.Windows.Forms;
 
public class Window {
[STAThread]
static void Main() {
Form form = new Form();
form.Text = "Window";
form.Disposed += delegate { Application.Exit(); };
 
form.Show();
Application.Run();
}
}</syntaxhighlight>
 
=={{header|C++}}==
Line 187 ⟶ 293:
'''Compiler command:''' qmake -pro; qmake
 
<langsyntaxhighlight lang="cpp">#include <QApplication>
#include <QMainWindow>
 
Line 196 ⟶ 302:
window.show();
return app.exec();
}</langsyntaxhighlight>
 
{{libheader|GTK}}
Line 202 ⟶ 308:
'''Compiler command:''' g++ filename.cc -o test `pkg-config --cflags --libs gtkmm-2.4`
 
<langsyntaxhighlight lang="cpp">#include <iostream>
#include <gtkmm.h>
 
Line 222 ⟶ 328:
exit( 0 ) ;
}</langsyntaxhighlight>
 
=={{header|C sharp|C#}}==
 
{{libheader|Windows Forms}}
{{uses from|library|.NET Framework|component1=System.Windows.Forms|component2=System.Windows.Forms.Window|component3=System.Windows.Forms.Form|component4=System.Windows.Forms.Application}}
<lang csharp>using System;
using System.Windows.Forms;
 
public class Window {
[STAThread]
static void Main() {
Form form = new Form();
form.Text = "Window";
form.Disposed += delegate { Application.Exit(); };
 
form.Show();
Application.Run();
}
}</lang>
 
=={{header|Clojure}}==
Line 248 ⟶ 334:
{{uses from|library|Swing|component1=JFrame}}
 
<langsyntaxhighlight lang="clojure">(import '(javax.swing JFrame))
 
(let [frame (JFrame. "A Window")]
(doto frame
(.setSize 600 800)
(.setVisible true)))</langsyntaxhighlight>
 
=={{header|Common Lisp}}==
Line 261 ⟶ 347:
{{works with|LispWorks}}
 
<langsyntaxhighlight lang="lisp">(capi:display (make-instance 'capi:interface :title "A Window"))</langsyntaxhighlight>
 
==={{libheader|CLIM}}===
Line 269 ⟶ 355:
Setting up the environment:
 
<langsyntaxhighlight lang="lisp">(require :mcclim)
(cl:defpackage #:rc-window
(:use #:clim-lisp #:clim))
(cl:in-package #:rc-window)</langsyntaxhighlight>
 
The actual definition and display:
 
<langsyntaxhighlight lang="lisp">(define-application-frame rc-window ()
()
(:layouts (:default)))
 
(run-frame-top-level (make-application-frame 'rc-window))</langsyntaxhighlight>
 
Note: This creates a small, useless window ("frame"). Useful frames will have some ''panes'' defined inside them.
 
==={{libheader|Swing}}===
{{uses from|library|Swing|component1=JFrame}}
Works with the Armed Bear Common Lisp implementation that targets the JVM.
 
<syntaxhighlight lang="lisp">(defun create-window ()
"Creates a window"
(let ((window (jnew (jconstructor "javax.swing.JFrame"))))
(jcall (jmethod "javax.swing.JFrame" "setVisible" "boolean")
window (make-immediate-object t :boolean))))
 
(create-window)</syntaxhighlight>
 
=={{header|D}}==
{{libheader|FLTK4d}}
<langsyntaxhighlight lang="d"> module Window;
import fltk4d.all;
Line 294 ⟶ 392:
window.show;
FLTK.run;
}</langsyntaxhighlight>
 
{{libheader|Derelict}}
{{libheader|SDL}}
<langsyntaxhighlight lang="d"> import derelict.sdl.sdl;
int main(char[][] args)
Line 329 ⟶ 427:
return 0;
}</langsyntaxhighlight>
 
{{libheader|QD}}
QD is a simple and easy-to-use wrapper around SDL.
<langsyntaxhighlight lang="d"> import qd;
void main() {
screen(640, 480);
while (true) events();
}</langsyntaxhighlight>
 
=={{header|Delphi}}==
 
This first example is a minimalist approach using Delphi's standard Window (form) creation procedure. In Delphi 7, this will create a single Window executable of 362KB.
 
<syntaxhighlight lang="delphi">
 
// The project file (Project1.dpr)
program Project1;
 
uses
Forms,
// Include file with Window class declaration (see below)
Unit0 in 'Unit1.pas' {Form1};
 
{$R *.res}
 
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
 
 
// The Window class declaration
unit Unit1;
 
interface
 
uses
Forms;
 
type
TForm1 = class(TForm)
end;
 
var
Form1: TForm1;
 
implementation
 
{$R *.dfm} // The window definition resource (see below)
 
end.
 
// A textual rendition of the Window (form) definition file (Unit1.dfm)
object Form1: TForm1
Left = 469
Top = 142
Width = 800
Height = 600
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Shell Dlg 2'
Font.Style = []
OldCreateOrder = False
Position = poScreenCenter
PixelsPerInch = 96
TextHeight = 13
end
 
</syntaxhighlight>
 
This second example demonstrates a 'pure' Windows API approach (i.e. NOT using the Delphi Visual Component Library). In Delphi 7, this will create a single Window executable of 15KB.
 
<syntaxhighlight lang="delphi">
program Project3;
 
uses
Windows,
Messages;
 
var
WndClass: TWndClass;
Msg: TMsg;
winT, winL: Integer;
 
// Initial height/width of the window
const
winW: Integer = 800;
winH: Integer = 600;
 
// Callback function to processes messages sent to the window
function WindowProc(hWnd,Msg,wParam,lParam:Integer): Integer; stdcall;
begin
// Trap the WM_DESTROY message
if (Msg = WM_DESTROY) then PostQuitMessage(0);
Result := DefWindowProc(hWnd,Msg,wParam,lParam);
end;
 
begin
// Fill the WndClass structure with the window class attributes
// to be registered by the RegisterClass function
with WndClass do
begin
lpszClassName:= 'Form1';
lpfnWndProc := @WindowProc; // Pointer to our message handling callback
style := CS_OWNDC or // Request a unique device context
CS_VREDRAW or // Redraw window when resized vertically
CS_HREDRAW; // Redraw window when resized horizontally
hInstance := hInstance; // The instance that the window procedure of this class is within
hbrBackground := HBRUSH(COLOR_BTNFACE+1); // Background colour of the window
end;
 
// Register the window class for use by CreateWindow
RegisterClass(WndClass);
 
// Calculate initial top and left positions of the window
winT := (GetSystemMetrics(SM_CYFULLSCREEN) - winH) div 2;
winL := (GetSystemMetrics(SM_CXFULLSCREEN) - winW) div 2;
 
// Create the window
CreateWindow(WndClass.lpszClassName, // Class name
'Form1', // Window name
WS_OVERLAPPEDWINDOW or WS_VISIBLE, // Window style
winL, // Horizontal Position (Left)
winT, // Vertical Position (Top)
winW, // Width
winH, // Height
0, // Window parent/owner handle
0, // Menu handle
hInstance, // Handle to application instance
nil); // Pointer to window creation data
 
// Handle messages
while GetMessage(Msg,0,0,0) do
DispatchMessage(Msg);
 
end.
</syntaxhighlight>
 
=={{header|Dragon}}==
{{libheader|GUI}}
<syntaxhighlight lang="dragon">select "GUI"
 
window = newWindow("Window")
window.setSize(400,600)
window.setVisible()
 
</syntaxhighlight>
 
=={{header|E}}==
Line 357 ⟶ 598:
Platform independent EiffelVision 2 Library
 
<langsyntaxhighlight lang="eiffel ">class
APPLICATION
inherit
Line 375 ⟶ 616:
first_window: MAIN_WINDOW
-- Main window.
end</langsyntaxhighlight>
 
<langsyntaxhighlight lang="eiffel ">class
MAIN_WINDOW
inherit
Line 427 ⟶ 668:
main_container_created: main_container /= Void
end
end</langsyntaxhighlight>
 
 
{{libheader|Windows Forms}}
<langsyntaxhighlight lang="eiffel ">class
APPLICATION
inherit
Line 449 ⟶ 690:
{WINFORMS_APPLICATION}.run_form (Current)
end
end</langsyntaxhighlight>
 
=={{header|Emacs Lisp}}==
<syntaxhighlight lang="lisp">(make-frame)</syntaxhighlight>
<lang lisp>
 
(make-frame)
=={{header|Euphoria}}==
</lang>
===ARWEN===
{{libheader|ARWEN}}
<syntaxhighlight lang="euphoria">include arwen.ew
 
constant win = create(Window, "ARWEN window", 0, 0,100,100,640,480,{0,0})
 
WinMain(win, SW_NORMAL)
</syntaxhighlight>
 
===EuGTK===
{{libheader|EuGTK}}
<syntaxhighlight lang="euphoria">include GtkEngine.e
 
constant win = create(GtkWindow,"title=EuGTK Window;size=640x480;border=10;$destroy=Quit")
 
show_all(win)
main()</syntaxhighlight>
 
===EuWinGUI===
{{libheader|EuWinGUI}}
<syntaxhighlight lang="euphoria">include EuWinGUI.ew
 
Window("EuWinGUI window",100,100,640,480)
 
-- Event loop
while True do
WaitEvent()
end while
 
CloseApp(0)</syntaxhighlight>
 
===Win32Lib===
{{libheader|Win32Lib}}
<syntaxhighlight lang="euphoria">include Win32Lib.ew
 
constant win = createEx( Window, "Win32Lib", 0, Default, Default, 640, 480, 0, 0 )
 
WinMain( win, Normal )</syntaxhighlight>
 
===wxEuphoria===
{{libheader|wxEuphoria}}
<syntaxhighlight lang="euphoria">include wxeu/wxeud.e
 
constant win = create( wxFrame, {0, -1, "wxEuphoria window", -1, -1, 640, 480} )
 
wxMain( win )</syntaxhighlight>
 
=={{header|F_Sharp|F#}}==
Everything is provided by the .NET runtime so this is almost identical to [[C_sharp]].
 
{{libheader|Windows Forms}}
<syntaxhighlight lang="fsharp"> open System.Windows.Forms
[<System.STAThread>]
do
Form(Text = "F# Window")
|> Application.Run</syntaxhighlight>
 
=={{header|Factor}}==
<langsyntaxhighlight lang="factor">USING: ui ui.gadgets.labels ;
 
"This is a window..." <label> "Really?" open-window</langsyntaxhighlight>
 
=={{header|Fantom}}==
<langsyntaxhighlight lang="fantom">
using fwt
 
Line 472 ⟶ 770:
}
}
</syntaxhighlight>
</lang>
 
=={{header|Forth}}==
Line 479 ⟶ 777:
'''gtk-server command:''' gtk-server -fifo=ffl-fifo &
 
<langsyntaxhighlight lang="forth">include ffl/gsv.fs
 
\ Open the connection to the gtk-server and load the Gtk2 definitions
Line 511 ⟶ 809:
 
gsv+close drop
[THEN]</langsyntaxhighlight>
 
===iMops===
=={{header|F_Sharp|F#}}==
{{works with|iMops on MacOS}}
Everything is provided by the .NET runtime so this is almost identical to [[C_sharp]].
<syntaxhighlight lang="iMops">
 
Window+ w \ create a window
View v \ create a view
300 30 430 230 put: frameRect \ size a rectangle for the view
frameRect " Test" docWindow v new: w \ activate the view and window
show: w \ display the window
 
</syntaxhighlight>
 
=={{header|FreeBASIC}}==
<syntaxhighlight lang="freebasic">
#Include "windows.bi"
 
Dim As HWND Window_Main
Dim As MSG msg
 
'Create the window:
Window_Main = CreateWindow("#32770", "I am a window - close me!", WS_OVERLAPPEDWINDOW Or WS_VISIBLE, 100, 100, 350, 200, 0, 0, 0, 0)
'Windows message loop:
While GetMessage(@msg, Window_Main, 0, 0)
TranslateMessage(@msg)
DispatchMessage(@msg)
If msg.hwnd = Window_Main And msg.message = WM_COMMAND Then End
Wend
 
End
</syntaxhighlight>
 
=={{header|Frink}}==
<syntaxhighlight lang="frink">
g=(new graphics).show[]
</syntaxhighlight>
 
=={{header|FutureBasic}}==
<syntaxhighlight lang="futurebasic">window 1</syntaxhighlight>
 
=={{header|Gambas}}==
<syntaxhighlight lang="gambas">Public Sub Form_Open()
 
End</syntaxhighlight>
 
{{libheader|Windows Forms}}
<lang fsharp> open System.Windows.Forms
[<System.STAThread>]
do
Form(Text = "F# Window")
|> Application.Run</lang>
=={{header|Go}}==
===GTK===
{{libheader|go-gtk}}
<langsyntaxhighlight lang="go">package main
 
import "gtk"(
"github.com/mattn/go-gtk/glib"
"github.com/mattn/go-gtk/gtk"
)
 
func main() {
gtk.Init(nil)
window := gtk.WindowNewWindow(gtk.GTK_WINDOW_TOPLEVELWINDOW_TOPLEVEL)
window.Connect("destroy", func(*gtk.CallbackContext) {
func(*glib.CallbackContext) { gtk.MainQuit() }, "")
},
"")
window.Show()
gtk.Main()
}</langsyntaxhighlight>
 
===SDL===
{{libheader|Go-SDL}}
<langsyntaxhighlight lang="go">package main
 
import (
"sdllog"
 
"fmt"
"github.com/veandco/go-sdl2/sdl"
)
 
func main() {
window, err := sdl.CreateWindow("RC Window Creation",
if sdl.Init(sdl.INIT_VIDEO) != 0 {
fmtsdl.Println(WINDOWPOS_UNDEFINED, sdl.GetError())WINDOWPOS_UNDEFINED,
return320, 200, 0)
if err != nil {
log.Fatal(err)
}
deferfor sdl.Quit(){
if _, ok := sdl.WaitEvent().(*sdl.QuitEvent); ok {
break
}
}
window.Destroy()
}</syntaxhighlight>
 
===X11===
if sdl.SetVideoMode(200, 200, 32, 0) == nil {
<syntaxhighlight lang="go">package main
fmt.Println(sdl.GetError())
 
return
import (
"code.google.com/p/x-go-binding/ui"
"code.google.com/p/x-go-binding/ui/x11"
"log"
)
 
func main() {
win, err := x11.NewWindow()
if err != nil {
log.Fatalf("Error: %v\n", err)
}
defer win.Close()
 
for eev := new(sdl.Event);range ewin.WaitEventChan() && e.Type != sdl.QUIT; {
switch e := ev.(type) {
case ui.ErrEvent:
log.Fatalf("Error: %v\n", e.Err)
}
}
}</langsyntaxhighlight>
 
=={{header|Groovy}}==
Line 571 ⟶ 930:
new SwingBuilder().frame(title:'My Window', size:[200,100]).show()
</pre>
 
=={{header|GUISS}}==
 
We will open notepad as a window here.
<syntaxhighlight lang="guiss">Start,Programs,Accessories,Notepad</syntaxhighlight>
 
To close the window:
 
<syntaxhighlight lang="guiss">Window:Notepad,Button:Close</syntaxhighlight>
 
=={{header|Haskell}}==
Line 576 ⟶ 945:
 
A simple graphics library, designed to give the programmer access to most interesting parts of the Win32 Graphics Device Interface and X11 library without exposing the programmer to the pain and anguish usually associated with using these interfaces.
<langsyntaxhighlight lang="haskell">import Graphics.HGL
 
aWindow = runGraphics $
withWindow_ "Rosetta Code task: Creating a window" (300, 200) $ \ w -> do
drawInWindow w $ text (100, 100) "Hello World"
getKey w</langsyntaxhighlight>
 
=={{header|HicEst}}==
<langsyntaxhighlight lang="hicest">WINDOW(WINdowhandle=handle, Width=80, Height=-400, X=1, Y=1/2, TItle="Rosetta Window_creation Example")
! window units: as pixels < 0, as relative window size 0...1, ascurrent character sizes > 1
 
WRITE(WINdowhandle=handle) '... some output ...'</langsyntaxhighlight>
 
=={{header|IDL}}==
Line 598 ⟶ 967:
Icon and Unicon windowing is portable between Windows and X-Windows environments.
==={{header|Icon}}===
<langsyntaxhighlight Iconlang="icon">link graphics
 
procedure main(arglist)
Line 604 ⟶ 973:
WOpen("size=300, 300", "fg=blue", "bg=light gray")
WDone()
end</langsyntaxhighlight>
 
{{libheader|Icon Programming Library}}
Line 610 ⟶ 979:
 
==={{header|Unicon}}===
ThisThe Icon solution works in Unicon. An Unicon-only version is as follows:
 
{{improve|Unicon|The example is correct; however, Unicon implemented additional graphical features and a better example may be possible.}}
<syntaxhighlight lang="unicon">
import gui
$include "guih.icn"
 
class WindowApp : Dialog ()
 
# -- automatically called when the dialog is created
method component_setup ()
# make sure we respond to close event
connect(self, "dispose", CLOSE_BUTTON_EVENT)
end
end
 
# create and show the window
procedure main ()
w := WindowApp ()
w.show_modal ()
end
</syntaxhighlight>
 
=={{header|J}}==
A minimalist modal dialog:
<syntaxhighlight lang="j"> wdinfo 'Hamlet';'To be, or not to be: that is the question:'</syntaxhighlight>
<lang j> title=: '"Hamlet -- Act 3, Scene 1"'
 
text=: '"To be, or not to be: that is the question:"'
wd 'mb ',title,text
</lang>
A free-standing window:
<langsyntaxhighlight lang="j">MINWDW=: noun define
pc minwdw;
pas 162 85;pcenter;
rem form end;
)
 
Line 635 ⟶ 1,020:
)
minwdw_run ''</langsyntaxhighlight>
 
=={{header|Java}}==
{{libheader|Swing}}
<langsyntaxhighlight lang="java">import javax.swing.JFrame;
 
public class Main {
Line 648 ⟶ 1,033:
w.setVisible(true);
}
}</langsyntaxhighlight>
 
=={{header|JavaScript}}==
window.open("webpage.html", "windowname", "width=800,height=600");
 
=={{header|Julia}}==
<syntaxhighlight lang="julia"># v0.6
 
using Tk
 
w = Toplevel("Example")</syntaxhighlight>
 
=={{header|Kotlin}}==
{{trans|Java}}
 
<syntaxhighlight lang="kotlin">import javax.swing.JFrame
 
fun main(args : Array<String>) {
JFrame("Title").apply {
setSize(800, 600)
defaultCloseOperation = JFrame.EXIT_ON_CLOSE
isVisible = true
}
}</syntaxhighlight>
 
=={{header|Liberty BASIC}}==
Minimum code required to fulfill the task.
<syntaxhighlight lang="lb">nomainwin
open "GUI Window" for window as #1
wait
</syntaxhighlight>
As it would properly be used in a real program.
<syntaxhighlight lang="lb">nomainwin
open "GUI Window" for window as #1
#1 "trapclose Quit"
wait
sub Quit hndl$
close #hndl$
end
end sub
</syntaxhighlight>
 
=={{header|Lingo}}==
<syntaxhighlight lang="lingo">win = window().new("New Window")
w = 320
h = 240
firstScreen = _system.deskTopRectList[1]
x = firstScreen.width/2 - w/2
y = firstScreen.height/2- h/2
win.rect = rect(x,y,x+w,y+h)
-- Director needs a binary movie file (*.dir) for opening new windows. But this
-- movie file can be totally empty, and if it's write protected in the filesystem,
-- it can be re-used for multiple windows.
win.filename = _movie.path & "empty.dir"
win.open()</syntaxhighlight>
 
=={{header|Lua}}==
{{libheader|IUPLua}}
<syntaxhighlight lang="lua">local iup = require "iuplua"
 
iup.dialog{
<lang lua>
title = "Window";
require"iuplua"
iup.vbox{
margin = "10x10";
iup.label{title = "A window"}
}
}:show()
 
iup.MainLoop()
iup.dialog{ iup.label{ title = "example" }; title = "example"}:show()
</syntaxhighlight>
 
=={{header|M2000 Interpreter}}==
if (not iup.MainLoopLevel or iup.MainLoopLevel()==0) then
Window has title by default the name of variable, here MyForm
iup.MainLoop()
Window by default has 6000 twips width by 4000 twips height
end
 
</lang>
Here we open MyForm as modal window (with 1 as first parameter, after "Show")
 
Window show a square in left side of title (we can change this to be at right), so this close the window (if we have proper event function, we can quit the closing). Also using key combination Alt-F4 close window too (also send event).
Window open in the monitor where we see the mouse pointer.
 
M2000 Windows have own decoration, independent from platform (same to Xp, Windows 7, Windows 8, Windows 10 and Linux using Wine).
 
 
<syntaxhighlight lang="m2000 interpreter">
Module DisplayWindow {
Declare MyForm Form
Method MyForm,"Show",1
}
DisplayWindow
</syntaxhighlight>
 
=={{header|Mathematica}}/{{header|Wolfram Language}}==
<syntaxhighlight lang="mathematica">CreateDocument[]</syntaxhighlight>
 
=={{header|mIRC Scripting Language}}==
Line 676 ⟶ 1,139:
.window -Cp +d @WindowName 600 480
}
 
=={{header|Nanoquery}}==
This program creates and displays a 300x300 window with no contents and the title Nanoquery.
<syntaxhighlight lang="nanoquery">w = new(Nanoquery.Util.Windows.Window).setSize(300,300).setTitle("Nanoquery").show()</syntaxhighlight>
 
=={{header|NetRexx}}==
{{libheader|Swing}}
<syntaxhighlight lang="netrexx">/* NetRexx */
options replace format comments java crossref symbols binary
 
import javax.swing.JFrame
import javax.swing.JLabel
import java.awt.BorderLayout
import java.awt.Font
import java.awt.Color
 
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
parse arg showText .
select
when showText.length = 0 then addText = isTrue
when 'YES'.abbrev(showText.upper) then addText = isTrue
when showText = '.' then addText = isTrue
otherwise addText = isFalse
end
title = 'Rosetta Code - Window Creation'
createFrame(title, addText)
 
return
 
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
method createFrame(title, addText = boolean 0) public static
do
fenester = JFrame(title)
fenester.setSize(600, 200)
fenester.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
if addText then decorate(fenester)
fenester.setVisible(isTrue)
 
catch ex = Exception
ex.printStackTrace()
end
return
 
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
method decorate(fenester = JFrame, textStr = 'This page intentionally left blank.') private static returns JFrame
textlbl = JLabel(textStr)
textfont = Font(Font.SERIF, Font.BOLD, 20)
textlbl.setHorizontalAlignment(JLabel.CENTER)
textlbl.setFont(textfont)
textlbl.setForeground(Color.ORANGE)
fenester.add(textlbl, BorderLayout.CENTER)
 
return fenester
 
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
method isTrue() public static returns boolean
return (1 == 1)
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
method isFalse() public static returns boolean
return \(1 == 1)
</syntaxhighlight>
 
=={{header|Nim}}==
=== gtk3 / gintro ===
{{libheader|gintro}}
 
<syntaxhighlight lang="nim">import gintro/[glib, gobject, gtk, gio]
 
proc activate(app: Application) =
## Activate the application.
let window = newApplicationWindow(app)
window.setTitle("Window for Rosetta")
window.setSizeRequest(640, 480)
window.showAll()
 
let app = newApplication(Application, "Rosetta.Window")
discard app.connect("activate", activate)
discard app.run()</syntaxhighlight>
 
=== gtk2 ===
This is example 9 from the Araq/Nim github repository (modified to include a quit button)
<syntaxhighlight lang="nim">import gdk2, glib2, gtk2
 
const
Inside = "Mouse is over label"
OutSide = "Mouse is not over label"
 
# Context transmitted to callback.
type Context = object
label: PLabel
overButton: bool
 
 
proc changeLabel(p: PWidget; event: gdk2.PEventCrossing; context: var Context) {.cdecl.} =
context.label.set_text(if context.overButton: OutSide else: Inside)
context.overButton = not context.overButton
 
proc thisDestroy(widget: PWidget, data: Pgpointer) {.cdecl.} =
main_quit()
 
 
var context: Context
nim_init()
 
let window = window_new(gtk2.WINDOW_TOPLEVEL)
let stackbox = vbox_new(true, 10)
let button1 = button_new("Move mouse over button")
let buttonstyle = copy(button1.get_style())
buttonstyle.bg[STATE_PRELIGHT] = TColor(pixel: 0, red: 255, green: 0, blue: 0)
button1.set_style(buttonstyle)
let button2 = button_new()
context = Context(label: label_new(Outside), overButton: false)
let button3 = button_new("Quit")
 
button2.add(context.label)
stackbox.pack_start(button1, true, true, 0)
stackbox.pack_start(button2, true, true, 0)
stackbox.pack_start(button3, true, true, 0)
window.set_border_width(5)
window.add(stackbox)
 
discard window.signal_connect("destroy", SIGNAL_FUNC(thisDestroy), nil)
discard button1.signal_connect("enter_notify_event", SIGNAL_FUNC(changeLabel), addr(context))
discard button1.signal_connect("leave_notify_event", SIGNAL_FUNC(changeLabel), addr(context))
discard button3.signal_connect("clicked", SIGNAL_FUNC(thisDestroy), nil)
 
window.show_all()
main()</syntaxhighlight>
 
=== SDL ===
<syntaxhighlight lang="nim">import
sdl, sdl_image, colors
 
var
screen, greeting: PSurface
r: TRect
event: TEvent
bgColor = colChocolate.int32
 
if init(INIT_VIDEO) != 0:
quit "SDL failed to initialize!"
 
screen = SetVideoMode(640, 480, 16, SWSURFACE or ANYFORMAT)
if screen.isNil:
quit($sdl.getError())
 
greeting = IMG_load("tux.png")
if greeting.isNil:
echo "Failed to load tux.png"
else:
## convert the image to alpha and free the old one
var s = greeting.displayFormatAlpha()
swap(greeting, s)
s.freeSurface()
 
r.x = 0
r.y = 0
 
block game_loop:
while true:
while pollEvent(addr event) > 0:
case event.kind
of QUITEV:
break game_loop
of KEYDOWN:
if EvKeyboard(addr event).keysym.sym == K_ESCAPE:
break game_loop
else:
discard
discard fillRect(screen, nil, bgColor)
discard blitSurface(greeting, nil, screen, addr r)
discard flip(screen)
 
greeting.freeSurface()
screen.freeSurface()
sdl.Quit()</syntaxhighlight>
 
=== X11 ===
<syntaxhighlight lang="nim">import x11/[xlib, xutil, x]
 
const
WINDOW_WIDTH = 400
WINDOW_HEIGHT = 300
 
type WindowData = tuple[display: PDisplay; window: Window]
 
proc createWindow: WindowData =
let width: cuint = WINDOW_WIDTH
let height: cuint = WINDOW_HEIGHT
var sizeHints: XSizeHints
 
let display = XOpenDisplay(nil)
if display == nil:
echo "Connection to X server failed."
quit QuitFailure
 
let screen = XDefaultScreen(display)
var rootwin = XRootWindow(display, screen)
let win = XCreateSimpleWindow(display, rootwin, 100, 10, width, height, 5,
XBlackPixel(display, screen), XWhitePixel(display, screen))
sizeHints.flags = PSize or PMinSize or PMaxSize
sizeHints.min_width = width.cint
sizeHints.max_width = width.cint
sizeHints.min_height = height.cint
sizeHints.max_height = height.cint
discard XSetStandardProperties(
display, win, "Simple Window", "window", 0, nil, 0, addr(sizeHints))
discard XSelectInput(display, win, ButtonPressMask or KeyPressMask or PointerMotionMask)
discard XMapWindow(display, win)
result = (display, win)
 
proc closeWindow(data: WindowData) =
discard XDestroyWindow(data.display, data.window)
discard XCloseDisplay(data.display)
 
proc processEvent(xev: var XEvent) =
var key: KeySym
case xev.theType.int
of KeyPress:
key = XLookupKeysym(cast[ptr XKeyEvent](addr(xev)), 0)
if key.int != 0:
echo "keyboard event ", key.int
if key.int == 65307: # <Esc>
quit QuitSuccess
of ButtonPressMask, PointerMotionMask:
echo "Mouse event"
else:
discard
 
proc eventloop(data: WindowData) =
var xev: XEvent
discard XFlush(data.display)
var numEvents = XPending(data.display).int
while numEvents != 0:
dec numEvents
discard XNextEvent(data.display, addr(xev))
processEvent(xev)
 
let windata = createWindow()
while true:
eventloop(windata)
windata.closeWindow()</syntaxhighlight>
 
=== glut ===
<syntaxhighlight lang="nim">import glut
 
var win: int = 0
 
proc myOnKeyPress(c: int8, v1, v2: cint) {.cdecl.} =
echo(c)
if c == 27:
glutDestroyWindow(win)
 
glutInit()
win = glutCreateWindow("Goodbye, World!")
glutKeyboardFunc(TGlut1Char2IntCallback(myOnKeyPress))
glutMainLoop()</syntaxhighlight>
 
=== win ===
<syntaxhighlight lang="nim"># test a Windows GUI application
 
import
windows, shellapi, nb30, mmsystem, shfolder
 
#proc MessageBox(hWnd: int, lpText, lpCaption: CString, uType: uint): int
# {stdcall, import: "MessageBox", header: "<windows.h>"}
 
discard MessageBox(0, "Hello World!", "Nim GUI Application", 0)</syntaxhighlight>
 
=== IUP ===
<syntaxhighlight lang="nim">import iup
 
# assumes you have the iup .dll or .so installed
 
discard iup.open(nil,nil)
 
 
# now use a Dialog box to show a message
var lbl = label("Hello World")
setAttribute(lbl,"PADDING","10x10")
 
var contents = hbox(lbl, nil)
#SetAttribute(contents, "MARGIN", "5x5")
 
var dlg = dialog(contents)
#SetAttribute(dlg, "SIZE", "100x50")
 
discard dlg.show()
 
# a window via a quick message box, sitting on top of the main dialog window
discard Alarm("MyTitle","Hello World","Ok", "Not Ok", nil)
 
discard mainloop()
iup.close()</syntaxhighlight>
 
=== wxWidgets ===
This example works on MacOS but should be cross platform and native
<syntaxhighlight lang="nim">import wx
 
{.experimental.}
 
const
TITLE = "Rosetta Code - Window Creation Nim"
WIDTH = 300
HEIGHT = 300
 
let
POSITION = construct_wxPoint(100,100)
SIZE = construct_wxSize(WIDTH,HEIGHT)
 
let window = cnew construct_wxFrame(nil, wxID_ANY, TITLE, POSITION, SIZE)
 
window.show(true)
 
run_main_loop()</syntaxhighlight>
 
=={{header|Objeck}}==
<syntaxhighlight lang="objeck">
use Gtk2;
bundle Default {
class GtkHello {
function : Main(args : String[]) ~ Nil {
window := GtkWindow->New();
delete_callback := Events->DeleteEvent(GtkWidget) ~ Nil;
window->SignalConnect(Signal->Destroy, window->As(GtkWidget), delete_callback);
window->SetTitle("Title");
window->Show();
Appliction->Main();
}
}
}
</syntaxhighlight>
 
=={{header|Objective-C}}==
Line 684 ⟶ 1,483:
It opens a 800&times;600 window, centered on the screen, with title "A Window".
 
<langsyntaxhighlight lang="objc">#include <Foundation/Foundation.h>
#include <AppKit/AppKit.h>
 
Line 696 ⟶ 1,495:
 
@implementation Win : NSWindow
-(idinstancetype) init
{
[if ((self = [super
initWithContentRect: NSMakeRect(0, 0, 800, 600)
styleMask: (NSTitledWindowMask | NSClosableWindowMask)
backing: NSBackingStoreBuffered
defer: NO];)) {
 
[self setTitle: @"A Window"];
[self center];
 
[self setTitle: @"A Window"];
[self center];
}
return self;
}
 
 
-(void) dealloc
{
[super dealloc];
}
 
Line 729 ⟶ 1,522:
int main()
{
@autoreleasepool {
Win *mywin;
NSAutoreleasePool *pool;
 
[NSApplication sharedApplication];
pool = [[NSAutoreleasePool alloc] init];
Win *mywin = [[Win alloc] init];
[NSApplication sharedApplication];
mywin = [[WinNSApp alloc]setDelegate: initmywin];
[NSApp setDelegaterunModalForWindow: mywin];
 
[NSApp runModalForWindow: mywin];
}
return EXIT_SUCCESS;
}</langsyntaxhighlight>
 
=={{header|OCaml}}==
 
{{libheader|LablTk}}
<langsyntaxhighlight lang="ocaml">let () =
let top = Tk.openTk() in
Wm.title_set top "An Empty Window";
Wm.geometry_set top "240x180";
Tk.mainLoop ();
;;</langsyntaxhighlight>
execute with:
ocaml -I +labltk labltk.cma sample.ml
 
with the [http://caml.inria.fr/pub/docs/manual-ocaml/manual039.html Graphics] module:
<langsyntaxhighlight lang="ocaml">open Graphics
let () =
open_graph " 800x600";
let _ = read_line() in
close_graph ()</langsyntaxhighlight>
execute with:
ocaml graphics.cma tmp.ml
 
{{libheader|LablGTK2}}
<langsyntaxhighlight lang="ocaml">open GMain
 
let window = GWindow.window ~border_width:2 ()
Line 773 ⟶ 1,566:
button#connect#clicked ~callback:window#destroy;
window#show ();
Main.main ()</langsyntaxhighlight>
execute with:
ocaml -I +lablgtk2 lablgtk.cma gtkInit.cmo sample.ml
 
{{libheader|OCamlSDL}}
<langsyntaxhighlight lang="ocaml">let () =
Sdl.init [`VIDEO];
let _ = Sdlvideo.set_video_mode 200 200 [] in
Sdltimer.delay 2000;
Sdl.quit ()</langsyntaxhighlight>
execute with:
ocaml bigarray.cma -I +sdl sdl.cma sample.ml
 
{{libheader|OCamlSDL2}}
<syntaxhighlight lang="ocaml">open Sdl
 
let () =
let width, height = (640, 480) in
Sdl.init [`VIDEO];
let window, renderer =
Render.create_window_and_renderer
~width ~height ~flags:[]
in
let rgb = (0, 255, 0) in
let a = 255 in
Render.set_draw_color renderer rgb a;
Render.clear renderer;
Render.render_present renderer;
Timer.delay 3000;
Sdl.quit ()</syntaxhighlight>
execute with:
ocaml -I +sdl2 sdl2.cma sample.ml
 
{{libheader|ocaml-sfml}}
<langsyntaxhighlight lang="ocaml">let () =
let app = SFRenderWindow.make (640, 480) "OCaml-SFML Windowing" in
 
let rec loop () =
let continue =
match SFRenderWindow.getEventpollEvent app with
| Some SFEvent.Closed -> false
| _ -> true
Line 798 ⟶ 1,611:
SFRenderWindow.clear app SFColor.black;
SFRenderWindow.display app;
if continue then loop ()
in
loop ()</langsyntaxhighlight>
execute with:
ocaml bigarray.cma -I +/tmp/ocaml-sfml/src sfml_system.cma sfml_window.cma SFMLsfml_graphics.cma samplewin.ml
 
{{libheader|OCaml-Xlib}}
<langsyntaxhighlight lang="ocaml">open Xlib
let () =
Line 816 ⟶ 1,629:
let _ = xNextEventFun d in (* waits any key-press event *)
xCloseDisplay d;
;;</langsyntaxhighlight>
execute with:
ocaml -I +Xlib Xlib.cma sample.ml
 
=={{header|Odin}}==
<syntaxhighlight lang="odin">package main
 
import "vendor:sdl2"
 
main :: proc() {
using sdl2
 
window: ^Window = ---
renderer: ^Renderer = ---
event: Event = ---
 
Init(INIT_VIDEO)
CreateWindowAndRenderer(
640, 480,
WINDOW_SHOWN,
&window, &renderer
)
 
SetWindowTitle(window, "Empty window")
RenderPresent(renderer)
 
for event.type != .QUIT {
Delay(10)
PollEvent(&event)
}
 
DestroyRenderer(renderer)
DestroyWindow(window)
Quit()
}</syntaxhighlight>
 
=={{header|OpenEdge ABL/Progress 4GL}}==
 
<syntaxhighlight lang="openedgeabl">
 
DEFINE VAR C-Win AS WIDGET-HANDLE NO-UNDO.
CREATE WINDOW C-Win ASSIGN
HIDDEN = YES
TITLE = "OpenEdge Window Display"
HEIGHT = 10.67
WIDTH = 95.4
MAX-HEIGHT = 16
MAX-WIDTH = 95.4
VIRTUAL-HEIGHT = 16
VIRTUAL-WIDTH = 95.4
RESIZE = yes
SCROLL-BARS = no
STATUS-AREA = no
BGCOLOR = ?
FGCOLOR = ?
KEEP-FRAME-Z-ORDER = yes
THREE-D = yes
MESSAGE-AREA = no
SENSITIVE = yes.
 
VIEW C-Win.
 
ON WINDOW-CLOSE OF C-Win /* <insert window title> */
DO:
/* This event will close the window and terminate the procedure. */
APPLY "CLOSE":U TO THIS-PROCEDURE.
RETURN NO-APPLY.
END.
 
WAIT-FOR CLOSE OF THIS-PROCEDURE.
</syntaxhighlight>
 
=={{header|Oz}}==
<langsyntaxhighlight lang="oz">functor
import
Application
Line 838 ⟶ 1,721:
Window = {QTk.build GUIDescription}
{Window show}
end</langsyntaxhighlight>
 
=={{header|Pascal}}==
{{works with|Free_Pascal}}
{{libheader|SysUtils}}{{libheader|SDL}}
<syntaxhighlight lang="pascal">Program WindowCreation_SDL;
 
{$linklib SDL}
 
uses
SDL,
SysUtils;
 
var
screen: PSDL_Surface;
begin
SDL_Init(SDL_INIT_VIDEO);
screen := SDL_SetVideoMode( 800, 600, 16, (SDL_SWSURFACE or SDL_HWPALETTE) );
sleep(2000);
SDL_Quit;
end.</syntaxhighlight>
 
=={{header|Perl}}==
{{works with|Perl|5.8.8}}
 
==={{libheader|Perl/Tk}}===
<langsyntaxhighlight lang="perl"> use Tk;
MainWindow->new();
MainLoop;</langsyntaxhighlight>
 
==={{libheader|Perl/SDL}}===
<langsyntaxhighlight lang="perl"> use SDL::App;
use SDL::Event;
Line 856 ⟶ 1,760:
$app->loop({
SDL_QUIT() => sub { exit 0; },
});</langsyntaxhighlight>
 
==={{libheader|GTKPerl/Gtk3}}===
<langsyntaxhighlight lang="perl"> use GtkGtk3 '-init';
$window = GtkGtk3::Window->new;
$window->signal_connect(
destroy => sub { GtkGtk3->main_quit; }
);
$window->show_all;
GtkGtk3->main;</langsyntaxhighlight>
 
==={{libheader|Gtk2Perl/Qt}}===
<syntaxhighlight lang ="perl"> use Gtk2 '-init'strict;
use warnings;
use QtGui4;
 
my $app = Qt::Application(\@ARGV);
my $window = Qt::MainWindow;
$window->show;
exit $app->exec;</syntaxhighlight>
 
==={{libheader|Perl/Wx}}===
<syntaxhighlight lang="perl"> use Wx;
$window = Gtk2Wx::WindowFrame->new(undef, -1, 'title');
$window->signal_connect(Show;
Wx::SimpleApp->new->MainLoop;</syntaxhighlight>
destroy => sub { Gtk2->main_quit; }
);
$window->show_all;
Gtk2->main;</lang>
 
{{libheader|XUL::Gui}}
<lang perl>use XUL::Gui;
 
=={{header|Phix}}==
display Window;</lang>
{{libheader|Phix/basics}}
{{libheader|Phix/pGUI}}
Works on Windows/Linux, 32/64-bit, and you can run this online [http://phix.x10.mx/p2js/Window_creation.htm here].
<!--<syntaxhighlight lang="phix">(phixonline)-->
<span style="color: #000080;font-style:italic;">-- demo\rosetta\Window_creation.exw</span>
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
<span style="color: #008080;">include</span> <span style="color: #000000;">pGUI</span><span style="color: #0000FF;">.</span><span style="color: #000000;">e</span>
<span style="color: #7060A8;">IupOpen</span><span style="color: #0000FF;">()</span>
<span style="color: #7060A8;">IupShow</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">IupDialog</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">IupVbox</span><span style="color: #0000FF;">({</span><span style="color: #7060A8;">IupLabel</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"hello"</span><span style="color: #0000FF;">)},</span><span style="color: #008000;">"MARGIN=200x200"</span><span style="color: #0000FF;">),</span><span style="color: #008000;">"TITLE=Hello"</span><span style="color: #0000FF;">))</span>
<span style="color: #008080;">if</span> <span style="color: #7060A8;">platform</span><span style="color: #0000FF;">()!=</span><span style="color: #004600;">JS</span> <span style="color: #008080;">then</span>
<span style="color: #7060A8;">IupMainLoop</span><span style="color: #0000FF;">()</span>
<span style="color: #7060A8;">IupClose</span><span style="color: #0000FF;">()</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<!--</syntaxhighlight>-->
 
=={{header|PicoLisp}}==
{{trans|C}}
<langsyntaxhighlight PicoLisplang="picolisp">(load "@lib/openGl.l")
 
(glutInit)
(glutCreateWindow "Goodbye, World!")
(keyboardFunc '(() (bye)))
(glutMainLoop)</langsyntaxhighlight>
 
=={{header|PowerShell}}==
{{libheader|WPK}}
<syntaxhighlight lang ="powershell">New-Window -Show</langsyntaxhighlight>
{{libheader|Windows Forms}}
<langsyntaxhighlight lang="powershell">$form = New-Object Windows.Forms.Form
$form.Text = "A Window"
$form.Size = New-Object Drawing.Size(150,150)
$form.ShowDialog() | Out-Null</langsyntaxhighlight>
 
=={{header|Processing}}==
<syntaxhighlight lang="java">
size(1000,1000);
</syntaxhighlight>
 
=={{header|Prolog}}==
Works with SWI-Prolog which has a graphic interface XPCE.
<syntaxhighlight lang Prolog="prolog">?- new(D, window('Prolog Window')), send(D, open).</langsyntaxhighlight>
 
=={{header|PureBasic}}==
<syntaxhighlight lang="purebasic">Define.i MyWin, Event, x, y
All that is needed is
x = 400
<lang PureBasic>OpenWindow(0, 412, 172, 402, 94, "PureBasic")</lang>
y = 300
A working implementation could look like this
<lang PureBasic>Define MyWin, Event
 
MyWin =If OpenWindow(#PB_Any0, 4120, 1720, 402x, 94y, "I am a window - PureBasic", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If CreateImage(0, x, y) And StartDrawing(ImageOutput(0))
DrawingMode(#PB_2DDrawing_Transparent)
; Event loop
Box(0, 0, x, y, #White)
Repeat
Event For i = WaitWindowEvent()1 To 10
DrawText(x/3, y/2, "Hello World!", #Black)
Select Event
;DrawText(Random(200), Random(200), "Hello World!", RGB(Random(255), Random(255), Random(255)))
Next i
StopDrawing()
ImageGadget(0, 0, 0, x, y, ImageID(0))
EndIf
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
; Handle any gadget events here
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver</lang>
EndIf</syntaxhighlight>
 
=={{header|Python}}==
{{works with|Python|2.4 and 2.5}}
 
==={{libheader|Tkinter}}===
<langsyntaxhighlight lang="python"> import Tkinter
w = Tkinter.Tk()
w.mainloop()</langsyntaxhighlight>
 
{{works with|Python|3.7}}
<!-- see also https://stackoverflow.com/questions/673174/which-tkinter-modules-were-renamed-in-python-3 -->
<syntaxhighlight lang="python">import tkinter
w = tkinter.Tk()
w.mainloop()</syntaxhighlight>
 
==={{libheader|wxPython}}===
<langsyntaxhighlight lang="python"> from wxPython.wx import *
class MyApp(wxApp):
Line 943 ⟶ 1,887:
app = MyApp(0)
app.MainLoop()</langsyntaxhighlight>
 
==={{libheader|Pythonwin}}===
<langsyntaxhighlight lang="python"> import win32ui
from pywin.mfc.dialog import Dialog
d = Dialog(win32ui.IDD_SIMPLE_INPUT)
d.CreateWindow()</langsyntaxhighlight>
 
==={{libheader|PyGTK}}===
<langsyntaxhighlight lang="python"> import gtk
window = gtk.Window()
window.show()
gtk.main()</langsyntaxhighlight>
 
==={{libheader|PyQT}}===
<syntaxhighlight lang="python"> from PyQt4.QtGui import *
 
app = QApplication([])
win = QWidget()
win.show()
 
app.exec_()</syntaxhighlight>
 
=={{header|R}}==
Although R cannot create windows itself, it has wrappers for several GUI toolkits. tcl/tk is shipped with R by default, and you can create windows with that.
<syntaxhighlight lang="r">
<lang r>
win <- tktoplevel()
</syntaxhighlight>
</lang>
 
{{libheader|gWidgets}}
 
The gWidgets packages let you write GUIs in a toolkit independent way. You can create a window with
<syntaxhighlight lang="r">
<lang r>
library(gWidgetstcltk) #or e.g. gWidgetsRGtk2
win <- gwindow()
</syntaxhighlight>
</lang>
 
=={{header|Racket}}==
 
<syntaxhighlight lang="racket">
#lang racket/gui
(send (new frame%
[label "New Window"]
[width 100] [height 100])
show #t)
</syntaxhighlight>
 
=={{header|Raku}}==
(formerly Perl 6)
<b>Library</b> [https://github.com/perl6/gtk-simple GTK]
 
Exit either by clicking the button or the close window control in the upper corner.
<syntaxhighlight lang="raku" line>use GTK::Simple;
use GTK::Simple::App;
 
my GTK::Simple::App $app .= new(title => 'Simple GTK Window');
 
$app.size-request(250, 100);
 
$app.set-content(
GTK::Simple::VBox.new(
my $button = GTK::Simple::Button.new(label => 'Exit'),
)
);
 
$app.border-width = 40;
 
$button.clicked.tap: { $app.exit }
 
$app.run;</syntaxhighlight>
 
=={{header|RapidQ}}==
Line 981 ⟶ 1,967:
end create
form.showModal
 
=={{header|REBOL}}==
 
<syntaxhighlight lang="rebol">
view layout [size 100x100]
</syntaxhighlight>
 
'size' needed to show the close-window button.
 
=={{header|Red}}==
Empty Window with close [X] button
<syntaxhighlight lang="red">>>view []
</syntaxhighlight>
 
=={{header|Ring}}==
<syntaxhighlight lang="ring">
Load "guilib.ring"
 
MyApp = New qApp {
win1 = new qWidget() {
setwindowtitle("Hello World")
setGeometry(100,100,370,250)
show()}
exec()}
</syntaxhighlight>
 
=={{header|Ruby}}==
Line 986 ⟶ 1,997:
 
{{libheader|Ruby/Tk}}
<langsyntaxhighlight lang="ruby"> require 'tk'
window = TkRoot::new()
window::mainloop()</langsyntaxhighlight>
 
{{libheader|GTK}}
<langsyntaxhighlight lang="ruby"> require 'gtk2'
window = Gtk::Window.new.show
Gtk.main</langsyntaxhighlight>
 
=={{headerlibheader|SchemeShoes}}==
<syntaxhighlight lang="ruby">Shoes.app {}</syntaxhighlight>
{{libheader|Scheme/PsTk}}
 
=={{header|Run BASIC}}==
<lang scheme>
Show a empty browser with a button to "Close Me"
#!r6rs
<syntaxhighlight lang="runbasic">html "Close me!"
button #c, "Close Me", [doExit]
wait
 
' -----------------------------------------------------------------------------------
;; PS-TK example: display simple frame
' Get outta here. depending on how may layers you are into the window (history level)
' If you are at the top level then close the window
' ----------------------------------------------------------------------------------
[doExit]
html "<script language='javascript' type='text/javascript'>
var a = history.length;
a = a - 1;
window.open('','_parent','');
window.close();
history.go(-a);
</script>"
wait</syntaxhighlight>
 
=={{header|Rust}}==
(import (rnrs)
{{libheader|winit}}
(lib pstk main) ; change this to refer to your installation of PS/Tk
<syntaxhighlight lang="rust">use winit::event::{Event, WindowEvent}; // winit 0.24
)
use winit::event_loop::{ControlFlow, EventLoop};
use winit::window::WindowBuilder;
 
fn main() {
(define tk (tk-start))
let event_loop = EventLoop::new();
(tk/wm 'title tk "PS-Tk Example: Frame")
let _win = WindowBuilder::new()
.with_title("Window")
.build(&event_loop).unwrap();
 
event_loop.run(move |ev, _, flow| {
match ev {
Event::WindowEvent {
event: WindowEvent::CloseRequested, ..
} => {
*flow = ControlFlow::Exit;
}
_ => {}
}
});
}</syntaxhighlight>
 
(tk-event-loop tk)
</lang>
 
=={{header|Scala}}==
{{libheader|sdljava}}
{{libheader|Scala Java Swing interoperability}}
<lang scala>import javax.swing.JFrame
<syntaxhighlight lang="scala">import javax.swing.JFrame
 
object ShowWindow{
Line 1,027 ⟶ 2,069:
jf.setVisible(true)
}
}</langsyntaxhighlight>
 
Using native Scala libraries (which are wrappers over Java libraries):
 
<langsyntaxhighlight lang="scala">import scala.swing._
import scala.swing.Swing._
 
Line 1,039 ⟶ 2,081:
preferredSize = ((800, 600):Dimension)
}
}</langsyntaxhighlight>
 
=={{header|Scheme}}==
{{libheader|Scheme/PsTk}}
 
<syntaxhighlight lang="scheme">
#!r6rs
 
;; PS-TK example: display simple frame
 
(import (rnrs)
(lib pstk main) ; change this to refer to your installation of PS/Tk
)
 
(define tk (tk-start))
(tk/wm 'title tk "PS-Tk Example: Frame")
 
(tk-event-loop tk)
</syntaxhighlight>
 
=={{header|Seed7}}==
Seed7 has a graphics library ([http://seed7.sourceforge.net/libraries/draw.htm draw.s7i]),
which is operating system independend.
Seed7 programs run on all supported operating systems without a change.
The program below opens a small window.
The program waits until a key is pressed and exits.
 
<syntaxhighlight lang="seed7">$ include "seed7_05.s7i";
include "draw.s7i";
include "keybd.s7i";
 
const proc: main is func
begin
screen(200, 200);
KEYBOARD := GRAPH_KEYBOARD;
ignore(getc(KEYBOARD));
end func;</syntaxhighlight>
 
=={{header|Sidef}}==
===Tk===
<syntaxhighlight lang="ruby">var tk = require('Tk');
%s'MainWindow'.new;
tk.MainLoop;</syntaxhighlight>
 
===Gtk2===
<syntaxhighlight lang="ruby">var gtk2 = require('Gtk2') -> init;
var window = %s'Gtk2::Window'.new;
window.signal_connect(destroy => func(*_) { gtk2.main_quit });
window.show_all;
gtk2.main;</syntaxhighlight>
 
=={{header|Smalltalk}}==
{{works with|Pharo}}
{{works with|Squeak}}
<syntaxhighlight lang="smalltalk">SystemWindow new openInWorld.</syntaxhighlight>
<lang smalltalk>
 
SystemWindow new openInWorld.
{{works with|Smalltalk/X}}
</lang>
<syntaxhighlight lang="smalltalk">|top|
top := TopView new.
top add: (Label label: 'Hello World') in:(0.0@0.0 corner:1.0@1.0).
top open</syntaxhighlight>
 
=={{header|Standard ML}}==
Works with PolyML (XWindows/Motif module)
<syntaxhighlight lang="standard ml">
open XWindows ;
open Motif ;
 
val showWindow = fn () =>
let
val shell = XtAppInitialise "" "demo" "top" [] [XmNwidth 400, XmNheight 300 ] ;
val main = XmCreateMainWindow shell "main" [XmNmappedWhenManaged true ] ;
val buttn = XmCreateDrawnButton main "stop" [ XmNlabelString "Exit"] ;
val quit = fn (w,c,t) => (XtUnrealizeWidget shell; t) ;
in
(
XtSetCallbacks buttn [ (XmNactivateCallback, quit) ] XmNarmCallback ;
XtManageChildren [buttn];
XtManageChild main;
XtRealizeWidget shell
)
end;
</syntaxhighlight>
call
<syntaxhighlight lang="standard ml">
showWindow ()
</syntaxhighlight>
 
=={{header|Tcl}}==
{{libheader|Tk}}
Loading the [[Tk]] package is all that is required to get an initial window:
<syntaxhighlight lang ="tcl">package require Tk</langsyntaxhighlight>
If you need an additional window:
<syntaxhighlight lang ="tcl">toplevel .top</langsyntaxhighlight>
If you are using the increasingly popular [http://www.equi4.com/tclkit.html tclkit] under MS Windows, all you have to do is associate the tclkit with the extension “<tt>.tcl</tt>” and then create an <i>empty</i> file with, e.g., with the name <tt>nothing.tcl</tt>. Double-clicking that will “open a window” (an empty one).
 
=={{header|TI-89 BASIC}}==
 
<syntaxhighlight lang="ti89b">:Text "Rosetta Code"</syntaxhighlight>
<pre style="font-family:'TI Uni'">Dialog
Title "Rosetta Code"
Text ""
EndDlog</pre>
 
=={{header|Toka}}==
Line 1,070 ⟶ 2,191:
needs sdl
800 600 sdl_setup
 
=={{header|TorqueScript}}==
 
<syntaxhighlight lang="torquescript">
new GuiControl(GuiName)
{
profile = "GuiDefaultProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "0 0";
extent = "640 480";
minExtent = "8 2";
enabled = 1;
visible = 1;
clipToParent = 1;
 
new GuiWindowCtrl()
{
profile = "GuiWindowProfile";
horizSizing = "right";
vertSizing = "bottom";
position = "0 0";
extent = "100 200";
minExtent = "8 2";
enabled = 1;
visible = 1;
clipToParent = 1;
command = "canvas.popDialog(GuiName);";
accelerator = "escape";
maxLength = 255;
resizeWidth = 1;
resizeHeight = 1;
canMove = 1;
canClose = 1;
canMinimize = 1;
canMaximize = 1;
minSize = "50 50";
closeCommand = "canvas.popDialog(GuiName);";
};
};
 
canvas.pushDialog(GuiName);
</syntaxhighlight>
 
=={{header|TXR}}==
 
TXR has no library module for connecting to SDL, X11's Xlib, or GTK2.
 
All of these examples are completely self-contained, using the FFI capability in TXR, which can bind to any library whose interface is defined in terms of C functions and types.
 
No C header file is processed, and not a single line of C has to be compiled.
 
===SDL===
 
{{trans|C}}
 
A wait for a SDL key-up event is added, missing in the C version, so that the window does not just appear and disappear.
 
Note that SDL's header file uses a <code>enum</code> for the event constants like <code>SDL_KEYUP</code>. But then in <code>union SD_Event</code>, the event field declared as <code>UInt8</code>. (That's how it appears on my Ubuntu system; newer versions of SDL seems to have switched the type field, and other fields of the event structures, to <code>UInt32</code>.)
 
Here, we exploit TXR's capability to define enumerations of specific types: we make the event enumeration based on <code>uint8</code>, giving it a <code>typedef</code> name, and then use that <code>typedef</code> in the <code>SD_Event</code> union.
 
<syntaxhighlight lang="txrlisp">(defvarl SDL_INIT_VIDEO #x00000020)
(defvarl SDL_SWSURFACE #x00000000)
(defvarl SDL_HWPALETTE #x20000000)
 
(typedef SDL_Surface (cptr SDL_Surface))
 
(typedef SDL_EventType (enumed uint8 SDL_EventType
(SDL_KEYUP 3)
(SDL_QUIT 12)))
 
(typedef SDL_Event (union SD_Event
(type SDL_EventType)
(pad (array 8 uint32))))
 
 
(with-dyn-lib "libSDL.so"
(deffi SDL_Init "SDL_Init" int (uint32))
(deffi SDL_SetVideoMode "SDL_SetVideoMode"
SDL_Surface (int int int uint32))
(deffi SDL_GetError "SDL_GetError" str ())
(deffi SDL_WaitEvent "SDL_WaitEvent" int ((ptr-out SDL_Event)))
(deffi SDL_Quit "SDL_Quit" void ()))
 
(when (neql 0 (SDL_Init SDL_INIT_VIDEO))
(put-string `unable to initialize SDL: @(SDL_GetError)`)
(exit nil))
 
(unwind-protect
(progn
(SDL_SetVideoMode 800 600 16 (logior SDL_SWSURFACE SDL_HWPALETTE))
(let ((e (make-union (ffi SDL_Event))))
(until* (memql (union-get e 'type) '(SDL_KEYUP SDL_QUIT))
(SDL_WaitEvent e))))
(SDL_Quit))</syntaxhighlight>
 
===X11===
 
{{trans|C}}
 
One difference between the C original and this one is that the XLib macros for direct structure access, like <code>DefaultGC</code>, <code>DefaultScreen</code> or <code>WhitePixel</code> are not used; rather the correspoding C functions are used via FFI: <code>XDefaultScreen</code> and so on. The macro approach can be mimiced in detail, at the cost of a significant increase in verbosity (cloning the full declaration of the <code>_XDisplay</code> struct declaration, and reproducing the macros).
 
Also, this uses an enumeration for the events, so when the event type is decoded from the <code>XEvent</code> union, it comes out as a Lisp symbol.
 
<syntaxhighlight lang="txrlisp">(typedef XID uint32)
 
(typedef Window XID)
 
(typedef Drawable XID)
 
(typedef Display (cptr Display))
 
(typedef GC (cptr GC))
 
(typedef XEventType (enum _XEventType
(KeyPress 2)
(Expose 12)))
 
(defvarl KeyPressMask (ash 1 0))
(defvarl ExposureMask (ash 1 15))
 
(typedef XEvent (union _XEvent
(type XEventType)
(pad (array 24 long))))
 
(defvarl NULL cptr-null)
 
(with-dyn-lib "libX11.so"
(deffi XOpenDisplay "XOpenDisplay" Display (bstr))
(deffi XCloseDisplay "XCloseDisplay" int (Display))
(deffi XDefaultScreen "XDefaultScreen" int (Display))
(deffi XRootWindow "XRootWindow" Window (Display int))
(deffi XBlackPixel "XBlackPixel" ulong (Display int))
(deffi XWhitePixel "XWhitePixel" ulong (Display int))
(deffi XCreateSimpleWindow "XCreateSimpleWindow" Window (Display
Window
int int
uint uint uint
ulong ulong))
(deffi XSelectInput "XSelectInput" int (Display Window long))
(deffi XMapWindow "XMapWindow" int (Display Window))
(deffi XNextEvent "XNextEvent" int (Display (ptr-out XEvent)))
(deffi XDefaultGC "XDefaultGC" GC (Display int))
(deffi XFillRectangle "XFillRectangle" int (Display Drawable GC
int int uint uint))
(deffi XDrawString "XDrawString" int (Display Drawable GC
int int bstr int)))
 
(let* ((msg "Hello, world!")
(d (XOpenDisplay nil)))
(when (equal d NULL)
(put-line "Cannot-open-display" *stderr*)
(exit 1))
 
(let* ((s (XDefaultScreen d))
(w (XCreateSimpleWindow d (XRootWindow d s) 10 10 100 100 1
(XBlackPixel d s) (XWhitePixel d s))))
(XSelectInput d w (logior ExposureMask KeyPressMask))
(XMapWindow d w)
 
(while t
(let ((e (make-union (ffi XEvent))))
(XNextEvent d e)
(caseq (union-get e 'type)
(Expose
(XFillRectangle d w (XDefaultGC d s) 20 20 10 10)
(XDrawString d w (XDefaultGC d s) 10 50 msg (length msg)))
(KeyPress (return)))))
 
(XCloseDisplay d)))</syntaxhighlight>
 
===GTK2===
 
{{trans|C}}
 
<syntaxhighlight lang="txrlisp">(typedef GtkObject* (cptr GtkObject))
(typedef GtkWidget* (cptr GtkWidget))
 
(typedef GtkWidget* (cptr GtkWidget))
 
(typedef GtkWindowType (enum GtkWindowType
GTK_WINDOW_TOPLEVEL
GTK_WINDOW_POPUP))
 
(with-dyn-lib "libgtk-x11-2.0.so.0"
(deffi gtk_init "gtk_init" void ((ptr int) (ptr (ptr (zarray str)))))
(deffi gtk_window_new "gtk_window_new" GtkWidget* (GtkWindowType))
(deffi gtk_signal_connect_full "gtk_signal_connect_full"
ulong (GtkObject* str closure closure val closure int int))
(deffi gtk_widget_show "gtk_widget_show" void (GtkWidget*))
(deffi gtk_main "gtk_main" void ())
(deffi-sym gtk_main_quit "gtk_main_quit"))
 
(defmacro GTK_OBJECT (cptr)
^(cptr-cast 'GtkObject ,cptr))
 
(defmacro gtk_signal_connect (object name func func-data)
^(gtk_signal_connect_full ,object ,name ,func cptr-null
,func-data cptr-null 0 0))
 
(gtk_init (length *args*) (vec-list *args*))
 
(let ((window (gtk_window_new 'GTK_WINDOW_TOPLEVEL)))
(gtk_signal_connect (GTK_OBJECT window) "destroy" gtk_main_quit nil)
(gtk_widget_show window)
(gtk_main))</syntaxhighlight>
 
===Win32/Win64===
 
This solution is based on the "Your First Windows Program" example in MSDN. It registers a Window class, creates a Window and runs a Windows message loop against a custom <code>WndProc</code> function that is written in Lisp, which handles <code>WM_QUIT</code> and <code>WM_PAINT</code> events exactly like its C counterpart. All necessary basic types, structures, constants and foreign functions are declared using the TXR FFI language.
 
Note that the <code>CW_USEDEFAULT</code> constant in the Windows header files is defined as <code>0x80000000</code>. This is out of range of the signed <code>int</code> arguments of <code>CreateWindowEx</code> with which it is used. Microsoft is relying on an implementation-defined C conversion to turn this value into the most negative <code>int</code>. When the original constant was used in the TXR translation, TXR's FFI '''uncovered this little problem''' by throwing an exception arising from the out-of-range conversion attempt. The fix is to specify the correct value directly as <code>#x-80000000</code>.
 
<syntaxhighlight lang="txrlisp">(typedef LRESULT int-ptr-t)
(typedef LPARAM int-ptr-t)
(typedef WPARAM uint-ptr-t)
 
(typedef UINT uint32)
(typedef LONG int32)
(typedef WORD uint16)
(typedef DWORD uint32)
(typedef LPVOID cptr)
(typedef BOOL (bool int32))
(typedef BYTE uint8)
 
(typedef HWND (cptr HWND))
(typedef HINSTANCE (cptr HINSTANCE))
(typedef HICON (cptr HICON))
(typedef HCURSOR (cptr HCURSOR))
(typedef HBRUSH (cptr HBRUSH))
(typedef HMENU (cptr HMENU))
(typedef HDC (cptr HDC))
 
(typedef ATOM WORD)
(typedef LPCTSTR wstr)
 
(defvarl NULL cptr-null)
 
(typedef WNDCLASS (struct WNDCLASS
(style UINT)
(lpfnWndProc closure)
(cbClsExtra int)
(cbWndExtra int)
(hInstance HINSTANCE)
(hIcon HICON)
(hCursor HCURSOR)
(hbrBackground HBRUSH)
(lpszMenuName LPCTSTR)
(lpszClassName LPCTSTR)))
 
(defmeth WNDCLASS :init (me)
(zero-fill (ffi WNDCLASS) me))
 
(typedef POINT (struct POINT
(x LONG)
(y LONG)))
 
(typedef MSG (struct MSG
(hwnd HWND)
(message UINT)
(wParam WPARAM)
(lParam LPARAM)
(time DWORD)
(pt POINT)))
 
(typedef RECT (struct RECT
(left LONG)
(top LONG)
(right LONG)
(bottom LONG)))
 
(typedef PAINTSTRUCT (struct PAINTSTRUCT
(hdc HDC)
(fErase BOOL)
(rcPaint RECT)
(fRestore BOOL)
(fIncUpdate BOOL)
(rgbReserved (array 32 BYTE))))
 
(defvarl CW_USEDEFAULT #x-80000000)
(defvarl WS_OVERLAPPEDWINDOW #x00cf0000)
 
(defvarl SW_SHOWDEFAULT 5)
 
(defvarl WM_DESTROY 2)
(defvarl WM_PAINT 15)
 
(defvarl COLOR_WINDOW 5)
 
(deffi-cb wndproc-fn LRESULT (HWND UINT LPARAM WPARAM))
 
(with-dyn-lib "kernel32.dll"
(deffi GetModuleHandle "GetModuleHandleW" HINSTANCE (wstr)))
 
(with-dyn-lib "user32.dll"
(deffi RegisterClass "RegisterClassW" ATOM ((ptr-in WNDCLASS)))
(deffi CreateWindowEx "CreateWindowExW" HWND (DWORD
LPCTSTR LPCTSTR
DWORD
int int int int
HWND HMENU HINSTANCE
LPVOID))
(deffi ShowWindow "ShowWindow" BOOL (HWND int))
(deffi GetMessage "GetMessageW" BOOL ((ptr-out MSG) HWND UINT UINT))
(deffi TranslateMessage "TranslateMessage" BOOL ((ptr-in MSG)))
(deffi DispatchMessage "DispatchMessageW" LRESULT ((ptr-in MSG)))
(deffi PostQuitMessage "PostQuitMessage" void (int))
(deffi DefWindowProc "DefWindowProcW" LRESULT (HWND UINT LPARAM WPARAM))
(deffi BeginPaint "BeginPaint" HDC (HWND (ptr-out PAINTSTRUCT)))
(deffi EndPaint "EndPaint" BOOL (HWND (ptr-in PAINTSTRUCT)))
(deffi FillRect "FillRect" int (HDC (ptr-in RECT) HBRUSH)))
 
(defun WindowProc (hwnd uMsg wParam lParam)
(caseql* uMsg
(WM_DESTROY
(PostQuitMessage 0)
0)
(WM_PAINT
(let* ((ps (new PAINTSTRUCT))
(hdc (BeginPaint hwnd ps)))
(FillRect hdc ps.rcPaint (cptr-int (succ COLOR_WINDOW) 'HBRUSH))
(EndPaint hwnd ps)
0))
(t (DefWindowProc hwnd uMsg wParam lParam))))
 
(let* ((hInstance (GetModuleHandle nil))
(wc (new WNDCLASS
lpfnWndProc [wndproc-fn WindowProc]
hInstance hInstance
lpszClassName "Sample Window Class")))
(RegisterClass wc)
(let ((hwnd (CreateWindowEx 0 wc.lpszClassName "Learn to Program Windows"
WS_OVERLAPPEDWINDOW
CW_USEDEFAULT CW_USEDEFAULT
CW_USEDEFAULT CW_USEDEFAULT
NULL NULL hInstance NULL)))
(unless (equal hwnd NULL)
(ShowWindow hwnd SW_SHOWDEFAULT)
(let ((msg (new MSG)))
(while (GetMessage msg NULL 0 0)
(TranslateMessage msg)
(DispatchMessage msg))))))</syntaxhighlight>
 
=={{header|VBA}}==
<pre>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Need to reference the following object library (From the Tools menu, choose References)
Microsoft Forms 2.0 Object Library
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
And :
Programmatic Access to Visual Basic Project must be trusted. See it in Macro's security!</pre>
<syntaxhighlight lang="vb">
Option Explicit
 
Sub InsertForm()
Dim myForm As Object, strname As String
Set myForm = ThisWorkbook.VBProject.VBComponents.Add(3)
strname = myForm.Name
VBA.UserForms.Add(strname).Show
End Sub</syntaxhighlight>
 
=={{header|Vedit macro language}}==
Creates an empty window with ID 'A' near the upper left corner of document area, with height of 20 text lines and width of 80 characters.
<langsyntaxhighlight lang="vedit">Win_Create(A, 2, 5, 20, 80)</langsyntaxhighlight>
Note: if you run this command while in Visual Mode, you should adjust your active window smaller so that the created window will not be hidden behind it (since the active window is always on top).
 
=={{header|Visual Basic .NET}}==
<langsyntaxhighlight lang="vb"> Dim newForm as new Form
newForm.Text = "It's a new window"
newForm.Show()</langsyntaxhighlight>
 
=={{header|V (Vlang)}}==
{{omit from|Batch File|No access to GUI functions.}}
<syntaxhighlight lang="Zig">
{{omit from|PHP|PHP cannot create windows by itself}}
import gg
{{omit from|Unlambda|No access to GUI functions.}}
import gx
 
fn main() {
mut app := gg.new_context(
bg_color: gx.white
resizable: true
create_window: true
width: 600
height: 600
frame_fn: frame
window_title: "Empty Window"
)
app.run()
}
 
fn frame(mut ctx gg.Context) {
ctx.begin()
ctx.end()
}
</syntaxhighlight>
 
=={{header|Wren}}==
{{libheader|DOME}}
<syntaxhighlight lang="wren">import "dome" for Window
 
class EmptyWindow {
construct new(width, height) {
Window.title = "Empty window"
Window.resize(width, height)
}
 
init() {}
 
update() {}
 
draw(alpha) {}
}
 
var Game = EmptyWindow.new(600, 600)</syntaxhighlight>
 
=={{header|X86 Assembly}}==
{{libheader|GTK}}<br>
{{works with|NASM}}
<langsyntaxhighlight lang="asm">
;GTK imports and defines etc.
%define GTK_WINDOW_TOPLEVEL 0
Line 1,148 ⟶ 2,669:
exit_sig_msg db "-> Rage quitting..",10,0
</syntaxhighlight>
</lang>
<br>
{{works with|MASM}}
<langsyntaxhighlight lang="asm">
.586
.model flat, stdcall
Line 1,227 ⟶ 2,748:
WndProc endp
end start
</syntaxhighlight>
</lang>
 
 
=={{header|Yabasic}}==
<syntaxhighlight lang="yabasic">open window 400,200 //minimum line required to accomplish the indicated task
clear screen
text 200,100,"I am a window - close me!","cc"
end</syntaxhighlight>
 
{{omit from|Batch File|No access to GUI functions.}}
{{omit from|EasyLang}}
{{omit from|Logtalk}}
{{omit from|Maxima}}
{{omit from|PARI/GP}}
{{omit from|PHP|PHP cannot create windows by itself}}
{{omit from|PostScript}}
{{omit from|Retro}}
{{omit from|SQL PL|It does not handle GUI}}
{{omit from|TI-83 BASIC|Doesn't run in a windowed interface}}
{{omit from|Unlambda|No access to GUI functions.}}
2,130

edits