win32 changes
parent
b6d7eb8923
commit
c2e07dd5ae
|
@ -1,5 +1,6 @@
|
||||||
IN: win32
|
IN: win32
|
||||||
USING: alien namespaces math io prettyprint kernel ;
|
USING: alien namespaces math io prettyprint kernel words ;
|
||||||
|
USING: inspector ;
|
||||||
|
|
||||||
SYMBOL: hInst
|
SYMBOL: hInst
|
||||||
SYMBOL: wc
|
SYMBOL: wc
|
||||||
|
@ -12,23 +13,38 @@ SYMBOL: className "SimpleWindowClass" className set
|
||||||
! : message-loop ( -- )
|
! : message-loop ( -- )
|
||||||
! message-loop ;
|
! message-loop ;
|
||||||
|
|
||||||
: app2
|
: wndproc ( hwnd uMsg wParam lParam -- lresult )
|
||||||
f GetModuleHandle hInst set
|
"uint" { "void*" "uint" "long" "long" } [
|
||||||
<WNDCLASSEX>
|
pick WM_DESTROY = [
|
||||||
|
3drop drop
|
||||||
|
f PostQuitMessage 0
|
||||||
|
] [
|
||||||
|
DefWindowProc
|
||||||
|
] if
|
||||||
|
] alien-callback ;
|
||||||
|
|
||||||
|
: register-wndclassex ( name wndproc -- )
|
||||||
|
"WNDCLASSEX" <c-object>
|
||||||
"WNDCLASSEX" c-size over set-WNDCLASSEX-cbSize
|
"WNDCLASSEX" c-size over set-WNDCLASSEX-cbSize
|
||||||
CS_HREDRAW CS_VREDRAW bitor over set-WNDCLASSEX-style
|
CS_HREDRAW CS_VREDRAW bitor over set-WNDCLASSEX-style
|
||||||
! [ event-loop ] over set-WNDCLASSEX-lpfnWndProc
|
>r execute r> [ set-WNDCLASSEX-lpfnWndProc ] keep
|
||||||
0 over set-WNDCLASSEX-cbClsExtra
|
0 over set-WNDCLASSEX-cbClsExtra
|
||||||
0 over set-WNDCLASSEX-cbWndExtra
|
0 over set-WNDCLASSEX-cbWndExtra
|
||||||
hInst get over set-WNDCLASSEX-hInstance
|
hInst get over set-WNDCLASSEX-hInstance
|
||||||
COLOR_WINDOW 1 + over set-WNDCLASSEX-hbrBackground
|
! COLOR_WINDOW 1+ GetSysColorBrush over set-WNDCLASSEX-hbrBackground
|
||||||
f over set-WNDCLASSEX-lpszMenuName
|
! "" over set-WNDCLASSEX-lpszMenuName
|
||||||
className get over set-WNDCLASSEX-lpszClassName
|
! [ set-WNDCLASSEX-lpszClassName ] keep
|
||||||
! ! f IDI_APPLICATION LoadIcon over [ set-WNDCLASSEX-hIcon ] keep set-WNDCLASSEX-hIconSm
|
f IDI_APPLICATION LoadIcon over [ set-WNDCLASSEX-hIcon ] 2keep
|
||||||
! f IDC_ARROW LoadCursor over set-WNDCLASSEX-hCursor
|
set-WNDCLASSEX-hIconSm
|
||||||
|
f IDC_ARROW LoadCursor over set-WNDCLASSEX-hCursor
|
||||||
! RegisterClassEx
|
! RegisterClassEx
|
||||||
|
;
|
||||||
|
|
||||||
! 0 className get "Second Application" WS_OVERLAPPEDWINDOW CW_USEDEFAULT CW_USEDEFAULT CW_USEDEFAULT CW_USEDEFAULT f f hInst get f ! CreateWindowEx
|
: app2
|
||||||
|
f GetModuleHandle hInst set
|
||||||
|
"App2" \ wndproc register-wndclassex
|
||||||
|
|
||||||
|
! 0 className get "Second Application" WS_OVERLAPPEDWINDOW CW_USEDEFAULT CW_USEDEFAULT CW_USEDEFAULT CW_USEDEFAULT f f hInst get f CreateWindowEx
|
||||||
|
|
||||||
! dup SW_SHOWDEFAULT ShowWindow
|
! dup SW_SHOWDEFAULT ShowWindow
|
||||||
! dup UpdateWindow
|
! dup UpdateWindow
|
||||||
|
|
|
@ -2,6 +2,7 @@ IN: scratchpad
|
||||||
USING: alien compiler kernel parser sequences words ;
|
USING: alien compiler kernel parser sequences words ;
|
||||||
|
|
||||||
{
|
{
|
||||||
|
{ "gdi" "gdi32" }
|
||||||
{ "user" "user32" }
|
{ "user" "user32" }
|
||||||
{ "kernel" "kernel32" }
|
{ "kernel" "kernel32" }
|
||||||
} [ first2 add-simple-library ] each
|
} [ first2 add-simple-library ] each
|
||||||
|
@ -9,6 +10,8 @@ USING: alien compiler kernel parser sequences words ;
|
||||||
{
|
{
|
||||||
"utils"
|
"utils"
|
||||||
"types"
|
"types"
|
||||||
|
"gdi32"
|
||||||
"kernel32"
|
"kernel32"
|
||||||
"user32"
|
"user32"
|
||||||
|
"examples"
|
||||||
} [ "/contrib/win32/" swap ".factor" append3 run-resource ] each
|
} [ "/contrib/win32/" swap ".factor" append3 run-resource ] each
|
||||||
|
|
|
@ -273,8 +273,11 @@ BEGIN-STRUCT: WNDCLASSEX
|
||||||
FIELD: int cbClsExtra
|
FIELD: int cbClsExtra
|
||||||
FIELD: int cbWndExtra
|
FIELD: int cbWndExtra
|
||||||
FIELD: HINSTANCE hInstance
|
FIELD: HINSTANCE hInstance
|
||||||
FIELD: HICON hIcon
|
! FIELD: HICON hIcon
|
||||||
FIELD: HCURSOR hCursor
|
FIELD: ushort* hIcon
|
||||||
|
! FIELD: HCURSOR hCursor
|
||||||
|
FIELD: ushort* hCursor
|
||||||
|
! FIELD: HBRUSH hbrBackground
|
||||||
FIELD: HBRUSH hbrBackground
|
FIELD: HBRUSH hbrBackground
|
||||||
FIELD: LPCTSTR lpszMenuName
|
FIELD: LPCTSTR lpszMenuName
|
||||||
FIELD: LPCTSTR lpszClassName
|
FIELD: LPCTSTR lpszClassName
|
||||||
|
|
|
@ -185,6 +185,13 @@ TYPEDEF: void* MSGBOXPARAMSW
|
||||||
: CF_GDIOBJLAST HEX: 3FF ; inline
|
: CF_GDIOBJLAST HEX: 3FF ; inline
|
||||||
|
|
||||||
|
|
||||||
|
: WM_NULL 0 ; inline
|
||||||
|
: WM_CREATE 1 ; inline
|
||||||
|
: WM_DESTROY 2 ; inline
|
||||||
|
: WM_MOVE 3 ; inline
|
||||||
|
: WM_SIZE 5 ; inline
|
||||||
|
: WM_ACTIVATE 6 ; inline
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -374,8 +381,9 @@ FUNCTION: HWND CreateWindowExW (
|
||||||
! FUNCTION: DefMDIChildProcA
|
! FUNCTION: DefMDIChildProcA
|
||||||
! FUNCTION: DefMDIChildProcW
|
! FUNCTION: DefMDIChildProcW
|
||||||
! FUNCTION: DefRawInputProc
|
! FUNCTION: DefRawInputProc
|
||||||
! FUNCTION: DefWindowProcA
|
FUNCTION: LRESULT DefWindowProcA ( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam ) ;
|
||||||
! FUNCTION: DefWindowProcW
|
FUNCTION: LRESULT DefWindowProcW ( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam ) ;
|
||||||
|
: DefWindowProc \ DefWindowProcW \ DefWindowProcA unicode-exec ;
|
||||||
! FUNCTION: DeleteMenu
|
! FUNCTION: DeleteMenu
|
||||||
! FUNCTION: DeregisterShellHookWindow
|
! FUNCTION: DeregisterShellHookWindow
|
||||||
! FUNCTION: DestroyAcceleratorTable
|
! FUNCTION: DestroyAcceleratorTable
|
||||||
|
@ -586,7 +594,7 @@ FUNCTION: int GetPriorityClipboardFormat ( UINT* paFormatPriorityList, int cForm
|
||||||
! FUNCTION: GetShellWindow
|
! FUNCTION: GetShellWindow
|
||||||
! FUNCTION: GetSubMenu
|
! FUNCTION: GetSubMenu
|
||||||
! FUNCTION: GetSysColor
|
! FUNCTION: GetSysColor
|
||||||
! FUNCTION: GetSysColorBrush
|
FUNCTION: HBRUSH GetSysColorBrush ( int nIndex ) ;
|
||||||
! FUNCTION: GetSystemMenu
|
! FUNCTION: GetSystemMenu
|
||||||
! FUNCTION: GetSystemMetrics
|
! FUNCTION: GetSystemMetrics
|
||||||
! FUNCTION: GetTabbedTextExtentA
|
! FUNCTION: GetTabbedTextExtentA
|
||||||
|
@ -687,12 +695,16 @@ FUNCTION: BOOL IsZoomed ( HWND hWnd ) ;
|
||||||
! FUNCTION: LoadCursorFromFileW
|
! FUNCTION: LoadCursorFromFileW
|
||||||
|
|
||||||
|
|
||||||
FUNCTION: HCURSOR LoadCursorA ( HINSTANCE hInstance, LPCTSTR lpCursorName ) ;
|
! FUNCTION: HCURSOR LoadCursorA ( HINSTANCE hInstance, LPCTSTR lpCursorName ) ;
|
||||||
FUNCTION: HCURSOR LoadCursorW ( HINSTANCE hInstance, LPCWSTR lpCursorName ) ;
|
! FUNCTION: HCURSOR LoadCursorW ( HINSTANCE hInstance, LPCWSTR lpCursorName ) ;
|
||||||
|
FUNCTION: HCURSOR LoadCursorA ( HINSTANCE hInstance, ushort lpCursorName ) ;
|
||||||
|
FUNCTION: HCURSOR LoadCursorW ( HINSTANCE hInstance, ushort lpCursorName ) ;
|
||||||
: LoadCursor \ LoadCursorW \ LoadCursorA unicode-exec ;
|
: LoadCursor \ LoadCursorW \ LoadCursorA unicode-exec ;
|
||||||
|
|
||||||
FUNCTION: HICON LoadIconA ( HINSTANCE hInstance, LPCTSTR lpIconName ) ;
|
! FUNCTION: HICON LoadIconA ( HINSTANCE hInstance, LPCTSTR lpIconName ) ;
|
||||||
FUNCTION: HICON LoadIconW ( HINSTANCE hInstance, LPCTSTR lpIconName ) ;
|
! FUNCTION: HICON LoadIconW ( HINSTANCE hInstance, LPCWSTR lpIconName ) ;
|
||||||
|
FUNCTION: HICON LoadIconA ( HINSTANCE hInstance, ushort lpIconName ) ;
|
||||||
|
FUNCTION: HICON LoadIconW ( HINSTANCE hInstance, ushort lpIconName ) ;
|
||||||
: LoadIcon \ LoadIconW \ LoadIconA unicode-exec ;
|
: LoadIcon \ LoadIconW \ LoadIconA unicode-exec ;
|
||||||
|
|
||||||
! FUNCTION: LoadImageA
|
! FUNCTION: LoadImageA
|
||||||
|
@ -821,7 +833,7 @@ FUNCTION: BOOL OpenClipboard ( HWND hWndNewOwner ) ;
|
||||||
! FUNCTION: PeekMessageW
|
! FUNCTION: PeekMessageW
|
||||||
! FUNCTION: PostMessageA
|
! FUNCTION: PostMessageA
|
||||||
! FUNCTION: PostMessageW
|
! FUNCTION: PostMessageW
|
||||||
! FUNCTION: PostQuitMessage
|
FUNCTION: void PostQuitMessage ( int nExitCode ) ;
|
||||||
! FUNCTION: PostThreadMessageA
|
! FUNCTION: PostThreadMessageA
|
||||||
! FUNCTION: PostThreadMessageW
|
! FUNCTION: PostThreadMessageW
|
||||||
! FUNCTION: PrintWindow
|
! FUNCTION: PrintWindow
|
||||||
|
|
Loading…
Reference in New Issue