HWND鼠标悬停时改变光标
HWND Change cursor when mouse Hover
当鼠标悬停在某个HWND时,我需要更改光标图标。我用
实现了鼠标光标的改变SetClassLong(hWindow, GCL_HCURSOR, (LONG)LoadCursor (NULL, IDC_CROSS));
但是它将游标应用于与指定HWND共享同一类的每个元素。例如,在我的例子中,HWND是一个Button元素,它的类是"Button",所以我的窗口中的所有按钮都将具有相同的光标。如何将光标更改为指定的HWND?像这样:
SetHwndCursor(hWindow, GCL_CURSOR, Cursor); //Invented function, just to make the example
谢谢。
要显示与类的默认光标不同的光标,您需要为窗口处理WM_SETCURSOR
消息并调用SetCursor
以响应WM_SETCURSOR
。一个简单的例子,请参见显示游标。
你需要子类化按钮来覆盖按钮的WndProc来处理WM_SETCURSOR
。使用SetWindowSubclass
来子类化窗口(然后在按钮被销毁时使用RemoveWindowSubclass
删除子类,以响应WM_NCDESTROY
-参见Raymond Chen的更安全的子类化了解详细信息)。SetWindowLongPtr
不再被推荐用于子类化窗口。
感谢@IInspectable和@JonathanPotter提供关于SetWindowSubclass
的信息。
我通过为所讨论的窗口处理WM_SETCURSOR
并使用SetCursor
来实现这一点。
相关文章:
- 如何在Qt C++中更改光标
- 变量没有改变?通过向量的函数调用
- 如何改变c++应用程序的视觉效果
- C++在不同线程中改变向量
- 如何访问和改变存储在矢量C++中的对象
- 在C++行尾写一个分号或多个分号是否会改变任何内容
- 为什么字符串的 move() 会改变内存中底层数据的位置?
- 为什么 c++ 动态数组的大小没有改变?
- 为什么提升图库的 read_graphviz() 函数会改变节点的索引
- Win32 API 控制台光标在 WriteConsole 后不移动
- 在向量内更改变量的值不会改变其在向量外的值
- 为什么 GCC 不能假设 std::vector::size 在这个循环中不会改变?
- 在 macOS 中使用 C/C++ 设置鼠标光标图像
- 改变或缩放两个正态分布以具有特定的相关系数
- 当我使用CHAR_INFO结构时,控制台会无缘无故地改变颜色
- SDL,改变光标
- Qt鼠标光标不改变时,打开对话框后下降事件
- MFC改变一个对话框的光标从另一个对话框
- 鼠标光标在c++中加载时不改变
- HWND鼠标悬停时改变光标