IsDialogMessage的函式原型為BOOL IsDialogMessage(HWND hDlg,LPMSG IpMsg);
基本介紹
- 中文名:IsDialogMessage
- 函式功能:一個訊息是否指定給指定的對話框
- 參數:hDlg
定義,參數,例子,
定義
函式功能:該函式決定一個訊息是否指定給指定的對話框,如果是,則處理訊息。 函式原型:BOOL IsDialogMessage(HWND hDlg,LPMSG IpMsg);
參數
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模組將其轉發給對話框所屬的視窗函式了,在對話框所屬的視窗函數裡面對訊息進行判斷,最終調用訊息對應的函式,而訊息對應的函式是我們之前映射好的,已經存在於對話框訊息映射表了。
例子
while(GetMessage(&stMsg,NULL,0,0))
{if(!IsDialogMessage(hDlg,&stMsg)){TranslateMessage(&stMsg);DispatchMessage(&stMsg);}
}