第十一章 對話方塊part3

2021-05-22 07:22:20 字數 1855 閱讀 2064

11.2非模態對話方塊

非模態對話方塊允許使用者在對話方塊與其它程式之間進行切換,又可以在對話方塊與建立對話方塊的視窗之間進行切換。當使用者覺得讓對話方塊保留片刻會更加方便時,使用非模態對話方塊是合適的。

非模態對話方塊是使用createdialog來建立的,該函式所使用的引數與dialogbox相同。hdlgmodeless = createdialog ( hinstance, sztemplate, hwndparent, dialogproc); 區別是createdialog函式立即傳回對話方塊的視窗控制代碼,並通常將這個視窗控制代碼存放到整體變數中。

模態對話方塊與非模態對話方塊的區別

①非模態對話方塊通常包含乙個標題列和乙個系統選單按鈕。對於模態對話方塊,您通常無須提供標題列和系統選單。

②用於非模態對話方塊的對話方塊模板中的style敘述形如:  style ws_popup | ws_caption | ws_sysmenu | ws_visible  如果省略了ws_visible,那麼您必須在createdialog呼叫之後呼叫showwindow

hdlgmodeless = createdialog (    . . .    ) ;        showwindow (hdlgmodeless, sw_show) ;  果您既沒有包含ws_visible樣式,又沒有呼叫showwindow,那麼非模態對話方塊將不會被顯示。

③與模態對話方塊和訊息框的訊息不同,非模態對話方塊的訊息要經過程式式的訊息佇列。要將這些訊息傳送給對話方塊視窗訊息處理程式,則必須改變訊息佇列。具體的**如下:

如果訊息是傳送給非模態對話方塊的,那麼isdialogmessage將它傳送給對話方塊中視窗訊息處理程式,並傳回true(非0);否則,它將傳回false(0)。簡單來說就是如果訊息是發給非模態對話方塊的話,該訊息就不進入windows的訊息迴圈。

④使用destroywindow而不是enddialog來結束非模態對話方塊。

也可以用createdialogparam來建立非模態對話方塊,並讓它儲存乙個結構指標。

模態對話方塊和非模態對話方塊的訊息迴圈

1、非模態對話方塊和父視窗共享當前執行緒的訊息迴圈

2、模態對話方塊新建乙個新的訊息迴圈,並由當前訊息迴圈派發訊息,而父視窗。模態對話方塊遮蔽了使用者對它父視窗的操作,但是不是在訊息迴圈裡面遮蔽,所以給父視窗傳送訊息,父視窗還是可以接收得到。

3、呼叫模態對話方塊的視窗處理函式會被阻塞,但是新的訊息迴圈仍然可以呼叫父視窗的訊息處理函式,所以,傳送給父視窗的新訊息仍然可以被及時處理。

新的colors程式

在colors2中,非模態對話方塊是在winmain函式裡建立的,緊跟在程式主視窗的showwindow呼叫之後。注意,主視窗的視窗樣式包含ws_clipchildren,這允許程式無須擦除對話方塊就能夠重畫主視窗。

colors2.rc

當建立對話方塊模板時,直接將三個滾動條的id分別設為10、11和12,將顯示滾動條目前值的三個靜態文字欄位的id分別設為13、14和15。將每個滾動條都設定為tab stop樣式,而從所有的六個靜態文字欄位中刪除group樣式。 

hexcalc:視窗還是對話方塊?

hexcalc.rc

這個程式完全不呼叫createwindow,也不處理wm_paint訊息,不取得裝置內容,也不處理滑鼠訊息。

class敘述是這個對話方塊與曾經建立過的對話方塊之間最重要的區別。

包含class敘述就告訴windows將訊息傳送到其它的地方-具體的說,就是傳送到在hexcalc視窗類別中指定的視窗訊息處理程式。

wndclass結構的cbwndextra欄位設定為dlgwindowextra。對於您自己註冊的對話方塊程式,這是必需的。

unity學習記錄第十一章 對話

unity學習記錄第十一章 要點利用ugui新建對話方塊 textasset讀取文字 利用協程逐字元輸出文字語句 筆記1.對話方塊 panel text image,canvas的render mode要選擇world space才能自定義對話方塊的位置 2.建立textasset型別的文字變數,使...

modern c design 第十一章

本章介紹了經常遇到的雙分派的一種泛型解決方案。c 在語法上實現了單分派,即虛函式,通過動態機制選擇相應的函式。雙分派是形如fun object1 a,object2 b 根據a和b的實際型別動態自動分派乙個處理函式。最容易想到的方案,蠻幹法 寫一大堆過載函式.不過這種方法會有很強的依賴性。也提供了一...

第十一章3

第十一章 一 滾動元件 awt中的滾動元件包括scrollbar 滾動條 和滾動面板 scrollpane 兩種。1 滾動條scrollbar 在指定的取值範圍內快速選取某一值的功能。i.構造方法 public scrollbar int orientation,int value,int visi...