IsDialogMessage

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

定義

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

參數

hDlg:標識對話框。
IpMsg:指向一個含有將被檢測的訊息的MSG結構。
返回值:如果訊息被處理,則返回值為非零值;如果訊息沒有被處理,則返回值為零。
備註:儘管IsDialogMessage函式是為無模態對話框而擴展的,但可以用含有控制的任何一個視窗來使用它。當 IsDialogMessage處理一個訊息時,它檢測鍵盤信息並把它們轉變成對回響對話框的選擇命令。例如當按下tab時選擇下一個控制或控制組,當按下down時選擇控制組的下一個控制。因為IsDialogMessage 函式要執行訊息所有必要的轉變和傳送,IsDialogMessage函式處理的訊息不必傳送給TranslateMessageDispatchMessage函式處理。 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; 庫檔案:usgr32.lib:Unicode:在Windows NT上實現為Unicode和ANSI兩種版本。
檢測該訊息是否是對應句柄的對話框訊息,如果是,則交個user32.dll模組對齊進行處理,實際上user32.dll模組將其轉發給對話框所屬的視窗函式了,在對話框所屬的視窗函數裡面對訊息進行判斷,最終調用訊息對應的函式,而訊息對應的函式是我們之前映射好的,已經存在於對話框訊息映射表了。

例子

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

相關詞條

相關搜尋

熱門詞條

聯絡我們