ui.backend.windows: create-window can now be called even when the UI is not running. Fixes game-input deploy test

db4
Slava Pestov 2009-05-13 22:41:42 -05:00
parent 0d8115a940
commit 06efcd1502
1 changed files with 14 additions and 11 deletions
basis/ui/backend/windows

View File

@ -556,11 +556,9 @@ M: windows-ui-backend do-events
[ DispatchMessage drop ] bi
] if ;
: register-wndclassex ( -- class )
"WNDCLASSEX" <c-object>
f GetModuleHandle
class-name-ptr get-global
pick GetClassInfoEx zero? [
:: register-window-class ( class-name-ptr -- )
"WNDCLASSEX" <c-object> f GetModuleHandle
class-name-ptr pick GetClassInfoEx 0 = [
"WNDCLASSEX" heap-size over set-WNDCLASSEX-cbSize
{ CS_HREDRAW CS_VREDRAW CS_OWNDC } flags over set-WNDCLASSEX-style
ui-wndproc over set-WNDCLASSEX-lpfnWndProc
@ -571,9 +569,9 @@ M: windows-ui-backend do-events
over set-WNDCLASSEX-hIcon
f IDC_ARROW LoadCursor over set-WNDCLASSEX-hCursor
class-name-ptr get-global over set-WNDCLASSEX-lpszClassName
RegisterClassEx dup win32-error=0/f
] when ;
class-name-ptr over set-WNDCLASSEX-lpszClassName
RegisterClassEx win32-error=0/f
] [ drop ] if ;
: adjust-RECT ( RECT -- )
style 0 ex-style AdjustWindowRectEx win32-error=0/f ;
@ -594,9 +592,16 @@ M: windows-ui-backend do-events
dup adjust-RECT
swap [ dup default-position-RECT ] when ;
: get-window-class ( -- class-name )
class-name-ptr [
dup expired? [ drop "Factor-window" utf16n malloc-string ] when
dup register-window-class
dup
] change-global ;
: create-window ( rect -- hwnd )
make-adjusted-RECT
[ class-name-ptr get-global f ] dip
[ get-window-class f ] dip
[
[ ex-style ] 2dip
{ WS_CLIPSIBLINGS WS_CLIPCHILDREN style } flags
@ -611,8 +616,6 @@ M: windows-ui-backend do-events
: init-win32-ui ( -- )
V{ } clone nc-buttons set-global
"MSG" malloc-object msg-obj set-global
"Factor-window" utf16n malloc-string class-name-ptr set-global
register-wndclassex drop
GetDoubleClickTime milliseconds double-click-timeout set-global ;
: cleanup-win32-ui ( -- )