我对win32完全不熟悉。我在过去的48小时里一直在努力。
我正在尝试构建一个“grid”,我在列表视图控件和标题控件上有示例msdn.microsoft.com。
第一个调用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库,但下载它是一团糟。
此外,我注意到如果我删除这些功能,一切都会继续正常运行。 然后,他们是否有必要?
谢谢!
答案 0 :(得分:9)
是的,这是必要的。他们需要获取已注册的自定义控件的窗口类。可能性是,代码中的其他一些组件正在加载它们。我不确定,但我想如果你在清单中支持comctl v6(XP和up视觉样式),你会自动获得commctl32.dll。
有关InitCommonControlsEx执行的更多信息here。
通过下载comctl32.lib不确定您的意思,它自NT 4和Windows 95以来就存在于每个Windows平台上,因此您无需重新分发它。