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