我是win32的新手。最近48个小时我一直在努力。

我正在尝试构建“网格” ,并且在msdn.microsoft.com上获得了 ListView 控件 header 控件的示例。

第一个调用InitCommonControls()函数(不过我读过此函数已过时)。

HWND DoCreateHeader(HWND hwndParent, HINSTANCE hInst)
{
    HWND hwndHeader;
    RECT rcParent;
    HDLAYOUT hdl;
    WINDOWPOS wp;

    // Ensure that the common control DLL is loaded, and then create
    // the header control.
    InitCommonControls();

    // ...

    // hwndHeader = CreateWindowEx(0, WC_HEADER, ...
}

第二个调用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库,但是下载却是一团糟。

此外,我已经注意到,如果删除这些功能,所有功能都会正常运行。 然后,有必要吗?

谢谢!

最佳答案

是的,这是必要的。他们需要获取注册这些自定义控件的窗口类。奇怪的是,您代码中的其他组件正在加载它们。我不确定,但是我认为如果 list 中支持comctl v6(XP及以上视觉样式),则会自动获得commctl32.dll。

有关InitCommonControlsEx的详细信息是here

不确定下载comctl32.lib是什么意思,因为NT 4和Windows 95以来它在每个Windows平台上都存在,因此您无需重新分发它。

10-08 12:47