InitCommonControls和InitCommonControlsEx
從Win95開始,Windows提供了一些新的Win32控件,稱為通用控件. 如:Toolbar,Status bar,Tree view,List view,Animation,Hot-key,Image list,Tab等等.這些控件的可執行代碼都放在comctl32.dll中.要使用通用控件,必須加載comctl32.dll.
可以調用函數InitCommonControls或InitCommonControlsEx來初始化控件.這兩個函數都是動態鏈接庫comctl32.dll中的函數,兩個函數的原型如下:
void InitCommonControls(VOID);
BOOL InitCommonControlsEx(LPINITCOMMONCONTROLSEX lpInitCtrls);
可以看到,InitCommonControls沒有參數,表示初始化所有的(實際上是大部分,見下文)通用控件.而InitCommonControlsEx則可以指定初始化什么控件.
這里"初始化"的含義是明確的,就是指注冊相應的窗口類.比如,只有事先注冊了"SysTreeView32"窗口類,然后才可以創建該控件的窗口.
注意,注冊窗口類只對當前進程有效,因為注冊的時候必須指定一個窗口地址,而地址是只對一個進程有效的.因此,每個進程都必須初始化后才可以使用通用控件.
函數InitCommonControls是個空函數,不做任何事情.但如果你調用了該函數,則鏈接器會將你的程序鏈接到comcl32.lib,然后 在程序啟動時,會加載comctl32.dll. 真正初始化的工作是在該庫的入口點處做的,在這里會注冊通用控件窗口類,然后應用程序就可以創建控件窗口,就象創建其它的子窗口控件一樣.
InitCommonControlsEx是實際注冊控件窗口類的函數.它根據參數lpInitCtrls->dwICC的內容類決定調用哪些控件的注冊代碼.