win32 Message(MSG)消息处理

一般情况下的消息处理如下,TranslateMessage转换virtual-keys消息到characters消息,DispatchMessage调度一个消息给窗口程序。

//getMessage第二个参数为HWND,这里设置为NULL,
//如果设置为hwnd,WM_DESTROY消息会响应不到
while(getMessage(&msg,NULL,,)
{
TranslateMessage(&msg);
DiapatchMessage(&msg);
}

如果窗口含有一个非模态对话框,需要使用IsDialogMessage判断是否为特定对话框的消息,并处理之。

while(getMessage(&msg,NULL,,)
{
if(hDlgModeless==||IsDialogMessage(hDlgModeless,&msg)
{
TranslateMessage(&msg);
DiapatchMessage(&msg); }
}

如果要处理快捷键还需要提前通过TranslateAccelerator处理快捷键消息。

while (GetMessage(&msg, NULL, , ))
{
if (hDlgModeless == || !IsDialogMessage(hDlgModeless, &msg))
{
if (!TranslateAccelerator(hwnd, hAccel, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
}
上一篇:sublime text编辑器删除已安装的插件


下一篇:poj 1273.PIG (最大流)