對話框和對話框類

對話框和對話框類

ID:38397556

大?。?73.50 KB

頁數(shù):44頁

時(shí)間:2019-06-11

對話框和對話框類_第1頁
對話框和對話框類_第2頁
對話框和對話框類_第3頁
對話框和對話框類_第4頁
對話框和對話框類_第5頁
資源描述:

《對話框和對話框類》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫

1、12.對話框和對話框類CDialog對話框經(jīng)常被使用,因?yàn)閷υ捒蚩梢詮哪0鍎?chuàng)建,而對話框模板是可以使用資源編輯器方便地進(jìn)行編輯的。1.模式和無模式對話框?qū)υ捒蚍謨煞N類型,模式對話框和無模式對話框。1.模式對話框一個(gè)模式對話框是一個(gè)有系統(tǒng)菜單、標(biāo)題欄、邊線等的彈出式窗口。在創(chuàng)建對話框時(shí)指定WS_POPUP,WS_SYSMENU,WS_CAPTION和DS_MODALFRAME風(fēng)格。即使沒有指定WS_VISIBLE風(fēng)格,模式對話框也會(huì)被顯示。創(chuàng)建對話框窗口時(shí),將發(fā)送WM_INITDIALOG消息(如果指

2、定對話框的DS_SETFONT風(fēng)格,還有WM_SETFONT消息)給對話框過程。對話框過程(Dialogboxprocedure)不是對話框窗口的窗口過程(Windowprocedure)。在Win32里,對話框的窗口過程由Windows系統(tǒng)提供,用戶在創(chuàng)建對話框窗口時(shí)提供一個(gè)對話框過程由窗口過程調(diào)用。對話框窗口被創(chuàng)建之后,Windows使得它成為一個(gè)激活的窗口,它保持激活直到對話框過程調(diào)用::EndDialog函數(shù)結(jié)束對話框的運(yùn)行或者Windows激活另一個(gè)應(yīng)用程序?yàn)橹?,在激活時(shí),用戶或者應(yīng)用程序

3、不可以激活它的所屬窗口(Ownerwindow)。從某個(gè)窗口創(chuàng)建一個(gè)模式對話框時(shí),Windows自動(dòng)地禁止使用(Disable)這個(gè)窗口和它的所有子窗口,直到該模式對話框被關(guān)閉和銷毀。雖然對話框過程可以Enable所屬窗口,但是這樣做就失去了模式對話框的作用,所以不鼓勵(lì)這樣做。Windows創(chuàng)建模式對話框時(shí),給當(dāng)前捕獲鼠標(biāo)輸入的窗口(如果有的話)發(fā)送消息WM_CANCLEMODE。收到該消息后,應(yīng)用程序應(yīng)該終止鼠標(biāo)捕獲(Releasethemousecapture)以便于用戶能把鼠標(biāo)移到模式對話框;

4、否則由于Owner窗口被禁止,程序?qū)⑹ナ髽?biāo)輸入。為了處理模式對話框的消息,Windows開始對話框自身的消息循環(huán),暫時(shí)控制整個(gè)應(yīng)用程序的消息隊(duì)列。如果Windows收到一個(gè)非對話框消息時(shí),則它把消息派發(fā)給適當(dāng)?shù)拇翱谔幚恚蝗绻盏搅薟M_QUIT消息,則把該消息放回應(yīng)用程序的消息隊(duì)列里,這樣應(yīng)用程序的主消息循環(huán)最終能處理這個(gè)消息。當(dāng)應(yīng)用程序的消息隊(duì)列為空時(shí),Windows發(fā)送WM_ENTERIDLE消息給Owner窗口。在對話框運(yùn)行時(shí),程序可以使用這個(gè)消息進(jìn)行后臺(tái)處理,當(dāng)然應(yīng)該注意經(jīng)常讓出控制給模式

5、對話框,以便它能接收用戶輸入。如果不希望模式對話框發(fā)送WM_ENTERIDlE消息,則在創(chuàng)建模式對話框時(shí)指定DS_NOIDLEMSG風(fēng)格。一個(gè)應(yīng)用程序通過調(diào)用::EndDialog函數(shù)來銷毀一個(gè)模式對話框。一般情況下,當(dāng)用戶從系統(tǒng)菜單里選擇了關(guān)閉(Close)命令或者按下了確認(rèn)(OK)或取消(CANCLE)按鈕,::EndDialog被對話框過程所調(diào)用。調(diào)用::EndDialog時(shí),指定其參數(shù)nResult的值,Windows將在銷毀對話框窗口后返回這個(gè)值,一般,程序通過返回值判斷對話框窗口是否完成

6、了任務(wù)或者被用戶取消。1.無模式對話框一個(gè)無模式對話框是一個(gè)有系統(tǒng)菜單、標(biāo)題欄、邊線等的彈出式窗口。在創(chuàng)建對話框模板時(shí)指定WS_POPUP、WS_CAPTION、WS_BORDER和WS_SYSMENU風(fēng)格。如果沒有指定WS_VISIBLE風(fēng)格,無模式對話框不會(huì)自動(dòng)地顯示出來。一個(gè)無模式對話框既不會(huì)禁止所屬窗口,也不會(huì)給它發(fā)送消息。當(dāng)創(chuàng)建一個(gè)模式對話框時(shí),Windows使它成為活動(dòng)窗口,但用戶或者程序可以隨時(shí)改變和設(shè)置活動(dòng)窗口。如果對話框失去激活,那么即使所屬窗口是活動(dòng)的,在Z軸順序上,它仍然在所屬

7、窗口之上。應(yīng)用程序負(fù)責(zé)獲取和派發(fā)輸入消息給對話框。大部分應(yīng)用程序使用主消息循環(huán)來處理,但是為了用戶可以使用鍵盤在控制窗口之間移動(dòng)或者選擇控制窗口,應(yīng)用程序應(yīng)該調(diào)用::IsDialogMessage函數(shù)。這里,順便解釋::IsDialogMessage函數(shù)。雖然該函數(shù)是為無模式對話框設(shè)計(jì)的,但是任何包含了控制子窗口的窗口都可以調(diào)用它,用來實(shí)現(xiàn)類似于對話框的鍵盤選擇操作。當(dāng)::IsDialogMessage處理一個(gè)消息時(shí),它檢查鍵盤消息并把它們轉(zhuǎn)換成相應(yīng)對話框的選擇命令。例如,當(dāng)Tab鍵被壓下時(shí),下一個(gè)

8、或下一組控制被選中,當(dāng)DownArrow鍵按下后,一組控制中的下一個(gè)控制被選擇。::IsDialogMessage完成了所有必要的消息轉(zhuǎn)換和消息派發(fā),所以該函數(shù)處理的消息一定不要傳遞給TranslateMessage和DispatchMessage處理。一個(gè)無模式對話框不能像模式對話框那樣返回一個(gè)值給應(yīng)用程序。但是對話框過程可以使用::SendMessage給所屬窗口傳遞信息。在應(yīng)用程序結(jié)束之前,它必須銷毀所有的無模式對話框。使用::DestroyWindow銷毀一個(gè)

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。