: my-wndproc ( -- object ) LRESULT { HWND UINT WPARAM LPARAM } "stdcall" [ pick windows-message-name name>> print flush DefWindowProc ] alien-callback ; : my-window ( -- hwnd ) [let "My Window" utf16n malloc-string &free :> name-ptr WNDCLASSEX f GetModuleHandle name-ptr pick GetClassInfoEx 0 = [ WNDCLASSEX heap-size >>cbSize CS_HREDRAW CS_VREDRAW bitor >>style my-wndproc >>lpfnWndProc 0 >>cbClsExtra 0 >>cbWndExtra f GetModuleHandle >>hInstance f GetModuleHandle "fraptor" utf16n string>alien LoadIcon >>hIcon f IDC_ARROW LoadCursor >>hCursor name-ptr >>lpszClassName RegisterClassEx win32-error=0/f ] [ drop ] if name-ptr name-ptr { WS_CAPTION WS_BORDER WS_THICKFRAME WS_SYSMENU } flags CW_USEDEFAULT 0 CW_USEDEFAULT 0 f f f GetModuleHandle f CreateWindow dup win32-error=0/f dup SW_SHOW ShowWindow drop ] ;