對話框dialog創建深入探索

這裏先將模式對話框,當然非模式也類似

 

首先說下一個結構體

typedef struct {
    DWORD style;
    DWORD dwExtendedStyle;
    WORD cdit;
    short x;
    short y;
    short cx;
    short cy;
} DLGTEMPLATE, *LPDLGTEMPLATE;

 

這個是對話框創建模板結構體

style:

Specifies the style of the dialog box. This member can be a combination of window style values (such as WS_CAPTION and WS_SYSMENU) and dialog box style values (such as DS_CENTER).

For a list of window styles, see CreateWindow. For a list of dialog box styles, see Dialog Box Templates.

dwExtendedStyle:

暫時沒看出什麼用...

cdit:指明創建有多少個items在這個dialog中

下面4個就不說了

 

根據csdn上解釋

創建dialog還有一些數據,這些數據時跟在這個結構體後面動態改變長度的。

順序依次是:菜單menu,dialog類名(可以用默認的,也可以自定義),title設置,字體設置(包括字體大小和字體風格),結構體中cdit個dword長度的,類型爲DLGITEMTEMPLATE ,意指各個item的信息。

 

這個就是dialog的結構體的剖析了。具體可以去查看msdn上的dlgtemplate結構體查看。

 

另外一些tip:

1:只有在style中設定了DS_SETFONT纔會有字體設置一項,而且設置後會在那些item創建和dialog box創建及運行過程中發送WM_SETFONT消息。

2:幾乎後面的都是以dword一個一個信息組裝的。

 

定義好結構體後,

然後通過initmodalindirect函數來初始化一個模式對話框。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章