我刚在我的应用程序中遇到问题,我需要获取 CreateWindowW 函数的静态地址。像这样:

&ShowWindow;

但是,当用CreateWindowW做同样的技巧时,我得到了编译器错误Identifier "CreateWindowW" is undefined(它是一个宏)。我实际上找不到该函数的定义位置(哪个DLL),甚至pinvoke.net也没有提及。

在某些网站上,有人提到它是user32.dll,但是其中我的函数的GetProcAddress返回空指针。我迷路了,为此功能链接了Windows上的哪个模块?

如果我尝试连接调试器并跟踪对此函数的调用,Visual Studio会将其“跳过”,因此我无法理解调用的去向。

我的构建是UNICODE。 WinUser.h文本,我可以看到:
#define CreateWindowA(lpClassName, lpWindowName, dwStyle, x, y,\
nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\
CreateWindowExA(0L, lpClassName, lpWindowName, dwStyle, x, y,\
nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
#define CreateWindowW(lpClassName, lpWindowName, dwStyle, x, y,\
nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\
CreateWindowExW(0L, lpClassName, lpWindowName, dwStyle, x, y,\
nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
#ifdef UNICODE
#define CreateWindow  CreateWindowW
#else
#define CreateWindow  CreateWindowA
#endif // !UNICODE

最佳答案

如果打开CreateWindow documentation on MSDN并向下滚动,您将看到它已实现为CreateWindowEx的包装器。如果打开CreateWindowEx doc并向下滚动,则会看到以下内容:

c++ - 哪个模块在Windows上实现CreateWindowW?-LMLPHP

因此,它是在User32.dll中实现的。

10-05 18:20