Win32 Message (MSG) Message Processing, messagemsg
In general, the message processing is as follows. TranslateMessage converts virtual-keys messages to characters messages, and DispatchMessage schedules a message to the window program.
// The second parameter of getMessage is HWND, which is set to NULL here. // if it is set to hwnd, the message WM_DESTROY will not respond to while (getMessage (& msg, NULL) {TranslateMessage (& msg); DiapatchMessage (& msg );}
If the window contains a non-modal dialog box, you need to use IsDialogMessage to determine whether the message is a specific dialog box and process it.
while(getMessage(&msg,NULL,0,0){ if(hDlgModeless==0||IsDialogMessage(hDlgModeless,&msg) { TranslateMessage(&msg); DiapatchMessage(&msg); }
}
To process the shortcut key, you must use the TranslateAccelerator to process the shortcut key message in advance.
while (GetMessage(&msg, NULL, 0, 0)) { if (hDlgModeless == 0 || !IsDialogMessage(hDlgModeless, &msg)) { if (!TranslateAccelerator(hwnd, hAccel, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } }