Winapi 是否需要使用InitCommonControlsEx()和InitCommonControls()?

Winapi 是否需要使用InitCommonControlsEx()和InitCommonControls()?,winapi,Winapi,我对win32一无所知。在过去的48小时里我一直在做这件事 我正在尝试构建一个“网格”,我在msdn.microsoft.com上获得了列表视图控件和标题控件的示例 第一个调用InitCommonControls()函数(此外,我读到这个函数已经过时) 第二个调用InitCommonControlsEx()函数 HWND CreateListView (HWND hwndParent, HINSTANCE hInst) { RECT rcl; INITCOMMONC

我对win32一无所知。在过去的48小时里我一直在做这件事

我正在尝试构建一个“网格”,我在msdn.microsoft.com上获得了列表视图控件和标题控件的示例

第一个调用InitCommonControls()函数(此外,我读到这个函数已经过时)

第二个调用InitCommonControlsEx()函数

HWND CreateListView (HWND hwndParent, HINSTANCE hInst) 
{     
    RECT rcl; 
    INITCOMMONCONTROLSEX icex;

    // Ensure that the common control DLL is loaded. 
    icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
    icex.dwICC  = ICC_LISTVIEW_CLASSES;
    InitCommonControlsEx(&icex); 

    // ...

    // HWND hWndListView = CreateWindow(WC_LISTVIEW ...
}
似乎这些函数需要comctl32.lib库,但下载时却一团糟

此外,我还注意到,如果我删除这些函数,一切都会正常工作那么,它们是必要的吗?


谢谢

是的,这是必要的。它们需要注册这些自定义控件的窗口类。很可能,代码中的其他组件正在加载它们。我不确定,但我认为如果清单中支持comctl v6(XP和更高版本的视觉样式),则会自动获得commctl32.dll

关于InitCommonControlsEx做什么的更多信息是


我不知道你下载comctl32.lib是什么意思,自从NT 4和Windows 95以来,它在每个Windows平台上都有,所以你不需要重新发布它。

哦,我的天哪!非常感谢。我没有注意到它在c:\Program Files\Microsoft SDK\Windows\v6.0A\Lib上
HWND CreateListView (HWND hwndParent, HINSTANCE hInst) 
{     
    RECT rcl; 
    INITCOMMONCONTROLSEX icex;

    // Ensure that the common control DLL is loaded. 
    icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
    icex.dwICC  = ICC_LISTVIEW_CLASSES;
    InitCommonControlsEx(&icex); 

    // ...

    // HWND hWndListView = CreateWindow(WC_LISTVIEW ...
}