InitCommonControlsEx()函数无法被编译器识别

时间:2016-03-20 21:15:42

标签: c++ function winapi header controls

我试图在窗口程序的主条目中调用InitCommonControlsEx(),虽然我包含了头并链接到ComCtl32.Lib,但由于某种原因,编译器强调该函数为undefined。以下是代码......

#include <CommCtrl.h>

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow)
{
INITCOMMONCONTROLSEX initControls;
initControls.dwSize = sizeof(INITCOMMONCONTROLSEX);
initControls.dwICC = ICC_BAR_CLASSES;
InitCommonControlsEx(&initControls);
}

我知道包含了正在做的事情,因为如果删除包含该标题,那么编译器就不会识别INITCOMMONCONTROLSEX类。

我真的很困惑。我进入了CommCtrl.h文件,发现许多部分用红色加下划线表示编译器发出警告,包括对WINAPI的任何引用。可能是我的标题丢了吗?我知道函数声明在那里,它在下面的图片中......

enter image description here

我已经谷歌搜索了几个小时,无法弄清楚。那里不是我需要的DLL文件,有吗?正如我所说,我已经链接了ComCtl32.Lib,有时也称为comctl32.lib(我不认为资本很重要)。此外,在我的计算机上,我有4个这个ComCtl32.Lib的实例,两个用于64位,两个用于x86。但是,我的感觉是问题是它无法从该标题中找到该函数的声明。谢谢。

编辑:感谢哈里约翰逊,我解决了这个问题。我不知道包含标准头文件需要在它们之前包含其他头文件。在这种情况下,编译器没有识别任何东西,因为在CommCtrl.h之前没有包含windows.h。任何知道自己在做什么的人都会犯一个明显的错误。您可以完全删除此问题。我希望当包含一个标题时,windows提供所有相关的依赖项都包含在该标题中。

0 个答案:

没有答案