gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 10:53:54 25 4
gpt4 key购买 nike

我刚刚在我的应用程序中遇到问题,我需要获取 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

最佳答案

CreateWindowExWuser32.dll 导出。您可以检查文档。或者您可以通过例如检查导出Microsoft 的 dumpbin 工具。

> dumpbin /exports c:\windows\system32\user32.dll | find /i "CreateWindow"       1618   6D 0000A230 CreateWindowExA       1619   6E 000107B8 CreateWindowExW       1620   6F 00041530 CreateWindowStationA       1621   70 000014D0 CreateWindowStationW
根据 its documentation

CreateWindowW 是一个作为宏实现的瘦包装器:

CreateWindow is implemented as a call to the CreateWindowEx function, as shown below.

#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

您也可以通过例如在 Visual Studio 中“转到定义”。

关于c++ - 哪个模块在 Windows 上实现了 CreateWindowW?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41628069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com