如何从HWND获得WNDCLASS
How to get WNDCLASS from HWND?
我现在正在使用游乐场SDK,需要获得我的游戏窗口的WNDCLASS。我在SDK中没有找到任何东西,这就是为什么我试图用游戏窗口的hWnd来做这件事。那么有没有办法从HWND获得WNDCLASS?我需要这个来更改游戏窗口中的系统光标
我不知道有问题的SDK,但只要它提供对本机HWND
类型的访问,就可以使用本机调用。
要更改该类所有窗口的光标:
使用SetClassLongPtr
功能:
SetClassLongPtr(hwnd, GCLP_HCURSOR, reinterpret_cast<LONG_PTR>(newCursorHandle));
只为游戏窗口更改光标:
首先,有一个WM_SETCURSOR
消息,您可以处理它来控制窗口中显示的光标。你可以在下面亚当·罗森菲尔德的评论中阅读更多关于这方面的内容。
除此之外,还有一种选择:根据SetCursor
文档,首先确保类的游标设置为空(NULL
)。然后,当鼠标进入和离开客户端区域时,可以使用SetCursor
功能。为了不干扰类中的其他窗口,请确保在鼠标进入时将类光标设置为NULL,并将其设置回鼠标退出时的状态。
otherCursor = SetCursor(otherCursor);
获取与窗口关联的只读WNDCLASSEX:
首先,使用GetClassName
获取与窗口关联的类的名称:
std::array<TCHAR, 256> className; //256 is max classname length
GetClassName(hwnd, className.data(), className.size());
然后,在对GetClassInfoEx
:的调用中使用它
WNDCLASSEX wce;
GetClassInfoEx(GetModuleHandle(nullptr), className.data(), &wce);
现在您可以访问wce
来读取类结构的内容。如果需要,可以用std::vector
替换std::array
,用&className[0]
替换.data()
,用CCD15替换nullptr
。如果您需要GetClassInfo
而不是WNDCLASSEX
,则CCD_16将返回WNDCLASS
。
相关文章:
- 正在查找文档以获得PS4平台的C++中的设备信息
- 如何从C++中的依赖类型中获得它所依赖的类型
- 欧拉项目#8答案是大以获得有效答案
- 如何使用C/C++在MacOSX中获得键盘布局
- 如何在不产生任何垃圾的情况下获得C中的像素
- 有没有一种方法可以在编译时获得作用域类名
- 如何在C++中获得"静态纯虚拟"功能?
- 如何设置一个范围来提取我想要获得的信息
- 在多次运行中获得一致的callgrind输出
- 通过错误处理,在C++中可靠地获得用户十六进制输入
- 如何在Directwrite中获得给定字体的可用OpenType功能
- 在我的代码中,获得最大的Pair Wise产品C++和输出并不总是正确的
- 当用户在qtablewidget中输入单元格时,如何获得信号?C++
- 未获得字符串中的预期输出
- C++需要帮助从用户那里获得一个整数,并确保它在另外两个整数之间
- Qt:当QListView获得新条目时,如何更新QStringList
- 如何在卷曲中获得卷曲/卷曲.h?
- 如何在创建自定义迭代器时获得 std::p air 的第一个和第二个?
- 当我输入字符类型的数字时,为什么我无法获得整数?
- 如何从HWND获得WNDCLASS