000
13.04.2006, 20:48 Uhr
ref
|
Der Code:
C++: |
#include<windows.h> HWND CreateMainWindow(HINSTANCE hInstance); LRESULT CALLBACK MessageHandler( HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam);
HWND hWnd=0; int WINAPI WinMain( HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) { hWnd=CreateMainWindow(hInstance);
if (NULL==hWnd) { MessageBox( 0,"Window Konnte Nicht Erzeugt Werden","Fehler",MB_OK); return 0; }
MSG msg; while( GetMessage( &msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return 0; }
HWND CreateMainWindow(HINSTANCE hInstance) { WNDCLASSEX WndClass= { sizeof(WNDCLASSEX), CS_DBLCLKS|CS_OWNDC|CS_HREDRAW|CS_VREDRAW, MessageHandler, 0, 0, hInstance, LoadIcon(NULL,IDI_WINLOGO), LoadCursor(NULL,IDC_ARROW), (HBRUSH)GetStockObject(WHITE_BRUSH), NULL, "WindowClass", LoadIcon(NULL,IDI_WINLOGO) };
RegisterClassEx(&WndClass); return CreateWindowEx( NULL, "WindowClass", "Hello Test", WS_OVERLAPPEDWINDOW|WS_VISIBLE, 0,0,1024,768, NULL, NULL, hInstance, NULL); }
LRESULT CALLBACK MessageHandler( HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) { switch (msg) { case WM_DESTROY: PostQuitMessage(0); return 0; break; } return DefWindowProc( hwnd,msg,wParam,lParam); }
|
die frage: wenn hier :
C++: |
while( GetMessage( &msg,NULL,0,0)) { TranslateMessage(&msg); DispatchMessage(&msg); }
|
getMessege gleich 0 ist also wenn das window geschlossen ist , es wird nicht zu TranslateMessage & DispatchMessage vorbei gehen, das heisst keine CALLBACK funktion umleitung und die schleife wird verlassen zu return 0 wo das ende des programms bedeutet , ohne das programme mit PostQuitMessage oder DefWindowProc zu beenden??
ich gehe davon aus dass windows trotzdem auch in diesem fall die CALLBACK funktion aufrufen wird um das programm zu beenden . was meint ihr? -- Man kann ein Problem nicht mit der gleichen Denkweise lösen, mit der es erschaffen wurde. (Albert Einstein) Dieser Post wurde am 13.04.2006 um 20:49 Uhr von ref editiert. |