This is a simple question. I've decided in my program to keep a Initialize and a CleanUp proc that are called before and after the message loop, respectively. Now, normally, I would keep a lot of this stuff in the WM_CREATE and WM_DESTROY of the app window, but I like this other approach better.
I don't see anything wrong with it, but I never see examples like this so I have to wonder why not?
Ex.
I don't see anything wrong with it, but I never see examples like this so I have to wonder why not?
Ex.
start: mov esi,offset start
and esi,0FFFF0000h
mov hInstance,esi
invoke GetCommandLine
mov CommandLine,eax
*** call Initialize
;allocate compatible DCs, open an ini file, allocate some memory
invoke CreateWindowEx,NULL,
addr szFrameClassName,
addr szFrameTitle,
WS_OVERLAPPEDWINDOW or WS_VISIBLE,
50,50,500,420,
NULL,NULL,
esi,NULL
mov Parent.hwnd,eax
xor eax,eax
invoke GetMessage, ADDR msg, eax, eax, eax
WM_messageloop: invoke TranslateMessage, ADDR msg
invoke DispatchMessage, ADDR msg
xor eax,eax
invoke GetMessage, ADDR msg, eax, eax, eax
test eax,eax
jnz WM_messageloop
push eax
*** call CleanUp
;Release Memory DCs created in initialize,
'close out files, dealloc mem. Preserve eax for exitprocess
pop eax
invoke ExitProcess,eax
chorus, imho the reason is to keep the window like an object onto itself - packing as much as you can into the WinProc. I hear this makes changes down the road easier, but I've used the same method you do above on small proggies with one window. :)
chorus,
neat code:alright: I'm doing something similar right now.
I think I'll borrow some of what you are doing.
Thanks.
neat code:alright: I'm doing something similar right now.
I think I'll borrow some of what you are doing.
Thanks.
bitRAKE, thanks for the info. Just wanted to make sure it was cool to do. Although my app isn't a single window, I just find it organizes things a little easier when I do it this way. Besides, there are a lot of things that aren't really specific to the app window so much as the app (like loading an ini file or something).
ThoughtCriminal, thanks :) Other than what the thread was about, it's a pretty standard message loop...
Bye all
--Chorus
ThoughtCriminal, thanks :) Other than what the thread was about, it's a pretty standard message loop...
Bye all
--Chorus
Thing like ini file loading and other "global" things should definitely
not go into WM_CREATE, but be done before the message-loop.
Init/Destroy that are specific to a window should go into the wndproc.
not go into WM_CREATE, but be done before the message-loop.
Init/Destroy that are specific to a window should go into the wndproc.