複製鏈接
請複製以下鏈接發送給好友

IsDialogMessage

鎖定
IsDialogMessage的函數原型為BOOL IsDialogMessage(HWND hDlg,LPMSG IpMsg);
中文名
IsDialogMessage
函數功能
一個消息是否指定給指定的對話框
參    數
hDlg

目錄

IsDialogMessage定義

函數功能:該函數決定一個消息是否指定給指定的對話框,如果是,則處理消息。  函數原型:BOOL IsDialogMessage(HWND hDlg,LPMSG IpMsg);

IsDialogMessage參數

hDlg:標識對話框。
IpMsg:指向一個含有將被檢測的消息的MSG結構。
返回值:如果消息被處理,則返回值為非零值;如果消息沒有被處理,則返回值為零。
備註:儘管IsDialogMessage函數是為無模態對話框而擴展的,但可以用含有控制的任何一個窗口來使用它。當 IsDialogMessage處理一個消息時,它檢測鍵盤信息並把它們轉變成對響應對話框的選擇命令。例如當按下tab時選擇下一個控制或控制組,當按下down時選擇控制組的下一個控制。因為IsDialogMessage 函數要執行消息所有必要的轉變和傳送,IsDialogMessage函數處理的消息不必傳送給TranslateMessage或 DispatchMessage函數處理。 IsDialogMessage函數把WM_GETDLGETDLGCODE發送到對話框應用程序,決定應該處理哪個鍵。 lsDialogMessage函數把DMa_ETDEFID和DM_SETDEFID消息發送到窗口。這些消息在WINUSERH頭文件中定義為WM_USER和WM_USER+1所以就有與應用程序定義的有一樣值的消息發生衝突。
速查:Windows NT: 3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;
頭文件:winuser.h; 庫文件:user32.lib:Unicode:在Windows NT上實現為Unicode和ANSI兩種版本。
檢測該消息是否是對應句柄的對話框消息,如果是,則交個user32.dll模塊對齊進行處理,實際上user32.dll模塊將其轉發給對話框所屬的窗口函數了,在對話框所屬的窗口函數里面對消息進行判斷,最終調用消息對應的函數,而消息對應的函數是我們之前映射好的,已經存在於對話框消息映射表了。

IsDialogMessage例子

while(GetMessage(&stMsg,NULL,0,0))
{if(!IsDialogMessage(hDlg,&stMsg)){TranslateMessage(&stMsg);DispatchMessage(&stMsg);}
}