對話方塊模板

2021-04-01 17:21:17 字數 3903 閱讀 7402

宋燎原

對話方塊構造流程如下:

在對話方塊的標準模板中,dlgtemplate結構後總是緊跟著三個變長陣列,它們分別指定了對話方塊的選單,類,標題。如果設定了ds_setfont屬性,這些陣列之後還緊跟著乙個指定字型大小的16-bit數和另乙個指定字型名的變長陣列。每個陣列由一或更多的16-bit元素組成。選單,類,標題和字型陣列必須在word邊界上對齊。

緊跟dlgtemplate結構之後的是乙個選單陣列,它確定了對話方塊的選單資源。如果陣列的第乙個元素是0x0000,那麼對話方塊就沒有選單,陣列也沒有其它元素。如果第乙個元素是0xffff,那麼陣列就有乙個額外的元素,它指定了執行檔案中選單資源的序數。如果第乙個元素是其它值,那麼系統就認為這個陣列是乙個以null結束的unicode字串,這個字串指定了執行檔案中選單資源的名字。

跟著選單陣列的是乙個類陣列,它確定了控制的視窗類。如果陣列的第乙個元素是0x0000,系統就用預定義的對話方塊類建立對話方塊,陣列再無其它元素。如果第乙個元素是0xffff,那麼陣列就有乙個額外的元素,它指定了系統預定義視窗類的序數。如果第乙個元素是其它值,那麼系統就認為這個陣列是乙個以null結束的unicode字串,這個字串指定了已註冊視窗類的名字。

跟著類陣列的是乙個標題陣列,陣列中存放的是乙個以null結束的unicode字串,這個字串指定了對話方塊的標題。如果陣列的第乙個元素是0x0000,那麼對話方塊就沒有標題,陣列也沒有其它元素。

16-bit point sizetypeface陣列緊跟著標題陣列,但是只有在style成員中設定了ds_setfont風格的時候才設定這些內容。16-bit point size指定了用於對話方塊和它的控制的文字的字型大小。typeface陣列是乙個以null結束的unicode字串,這個字串指定了字型的字型名稱。當給定了這些值的時候,(如果可能的話)系統用所給的字型大小和字型名建立字型,並在當它建立對話方塊和它的控制的時候傳送wm_setfont訊息到對話方塊訊息處理過程和視窗控制的訊息處理過程。

跟著標準對話方塊模板dlgtemplate頭的是乙個或更多的dlgitemtemplate結構,它們定義了對話方塊中控制的尺寸和風格。模板的cdit成員指明了它裡面dlgitemtemplate結構的個數。這些dlgitemtemplate結構必須在dword邊界上對齊。

如果你在選單,類,標題和字型陣列中指定了字串,你必須使用unicode字串。要生成可工作於windowswindows nt上的**,你要用multibytetowidechar函式去生成這些unicode字串。

dlgtemplate結構xycxcy成員按對話方塊單位指定數值。你可以用mapdialogrect函式把這些數值轉換為螢幕單位(畫素)數值。

typedefstruct dlgtemplate;

typedefstruct dlgitemtemplate;

對話方塊控制項構造流程如下:

在對話方塊的標準模板中,dlgitemtemplate結構後總是緊跟著三個變長陣列,它們分別指定了控制的類,標題和建立資料。每個陣列由一或更多的16位元素組成。

模板中的每個dlgitemtemplate結構必須在dword邊界上對齊。類,標題和建立資料陣列必須在word邊界上對齊。

緊跟dlgitemtemplate結構之後的是類陣列,它定義了控制的視窗類。如果陣列的第乙個元素是任何其它非0xffff數值,那麼系統就認為這個陣列中存放的是乙個以null結束的unicode字串,它指定了已註冊視窗類的名字。如果第乙個元素是0xffff,那麼陣列就有乙個額外的元素,它指定了系統預定義視窗類的序數。這個序數可以是如下所列原子值之一:

數值含義

0x0080button

0x0081edit

0x0082static

0x0083list box

0x0084scroll bar

0x0085combo box

緊跟類陣列之後的是標題陣列,它包含了控制的初始文字或資源id。如果陣列的第乙個元素是0xffff,那麼陣列就有乙個額外的元素,它指定了執行檔案中像圖示這樣的資源的序數。你可以使用像圖示這類控制的資源id,它裝載並顯示乙個圖示或其它非文字資源。如果第乙個元素是任何其它非0xffff數值,那麼系統就認為這個陣列中存放的是乙個以null結束的unicode字串,它指定了控制的初始文字。

控制的建立資料陣列從標題陣列之後的下乙個word邊界處開始存放。它的長度和格式任意。如果陣列的第乙個字非0,那麼它指出了建立資料的位元組長度(包括長度字)。控制的視窗訊息處理器必須能夠對資料進行解釋。當系統建立控制的時候,它把這個資料的指標通過lparam引數傳遞給發往控制的wm_create訊息

如果你在類和標題陣列中指定了字串,你必須使用unicode字串。要生成可工作於windowswindows nt上的**,你要用multibytetowidechar函式去生成這些unicode字串。

dlgitemtemplate結構xycxcy成員按對話方塊單位指定數值。你可以用mapdialogrect函式把這些數值轉換為螢幕單位(畫素)數值。

[email protected]

對話方塊 訊息對話方塊

我們在使用windows系統的過程中經常會見到訊息對話方塊,提示我們有異常發生或提出詢問等。因為在軟體開發中經常用到訊息對話方塊,所以mfc提供了兩個函式可以直接生成指定風格的訊息對話方塊,而不需要我們在每次使用的時候都要去建立對話方塊資源和生成對話方塊類等。這兩個函式就是cwnd類的成員函式mes...

對話方塊中顯示對話方塊

一 對話方塊中顯示對話方塊的方法 1 首先建立要在對話方塊裡顯示的那個對話方塊,命名為 idd inner 設定這個對話方塊的屬性 1 style 選擇 child 中文版 樣式 選擇 下層 2 border 為 none 中文版 邊框 選擇 無 2 為了顯示時能夠準確定位,我們可以在右邊要顯示對話...

常用對話方塊 訊息對話方塊

使用windows系統的過程中經常會見到訊息對話方塊,提示我們有異常發生或提出詢問等。因為在軟體開發 中經常用到訊息對話方塊,所以mfc提供了兩個函式可以直接生成指定風格的訊息對話方塊,而不需要我們在每次使用的時候都要去建立對話方塊資源和生成對話方塊類等。這兩個函式就是cwnd類的成員函式messa...