我是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平台上都存在,因此您无需重新分发它。