HWND 鼠标悬停时改变光标
HWND Change cursor when mouse Hover
我需要在鼠标悬停在某个 HWND 上时更改光标图标。我用
实现了鼠标光标的变化
SetClassLong(hWindow, GCL_HCURSOR, (LONG)LoadCursor (NULL, IDC_CROSS));
但是它将光标应用于与指定 HWND 共享相同 class 的每个元素。例如,在我的例子中,HWND 是一个 Button 元素,它的 class 是 "Button",所以我的 window 中的所有按钮都将具有相同的光标。我怎样才能将光标更改为指定的 HWND?像这样:
SetHwndCursor(hWindow, GCL_CURSOR, Cursor); //Invented function, just to make the example
谢谢。
要显示与 class 的默认光标不同的光标,您需要处理 WM_SETCURSOR
message for the window and call SetCursor
in response to WM_SETCURSOR
. For a brief example, see Displaying a Cursor。
您需要子class 按钮来覆盖按钮的 WndProc 以处理 WM_SETCURSOR
。不再推荐使用 SetWindowSubclass
to subclass the window (and then remove the subclassing with RemoveWindowSubclass
when the button is destroyed, in response to WM_NCDESTROY
—see Raymond Chen's Safer subclassing for details). SetWindowLongPtr
用于 subclassing windows.
感谢@IInspectable 和@JonathanPotter 提供有关 SetWindowSubclass
的信息。
我通过为有问题的 window 处理 WM_SETCURSOR
并使用 SetCursor
.
来完成此操作
我需要在鼠标悬停在某个 HWND 上时更改光标图标。我用
实现了鼠标光标的变化SetClassLong(hWindow, GCL_HCURSOR, (LONG)LoadCursor (NULL, IDC_CROSS));
但是它将光标应用于与指定 HWND 共享相同 class 的每个元素。例如,在我的例子中,HWND 是一个 Button 元素,它的 class 是 "Button",所以我的 window 中的所有按钮都将具有相同的光标。我怎样才能将光标更改为指定的 HWND?像这样:
SetHwndCursor(hWindow, GCL_CURSOR, Cursor); //Invented function, just to make the example
谢谢。
要显示与 class 的默认光标不同的光标,您需要处理 WM_SETCURSOR
message for the window and call SetCursor
in response to WM_SETCURSOR
. For a brief example, see Displaying a Cursor。
您需要子class 按钮来覆盖按钮的 WndProc 以处理 WM_SETCURSOR
。不再推荐使用 SetWindowSubclass
to subclass the window (and then remove the subclassing with RemoveWindowSubclass
when the button is destroyed, in response to WM_NCDESTROY
—see Raymond Chen's Safer subclassing for details). SetWindowLongPtr
用于 subclassing windows.
感谢@IInspectable 和@JonathanPotter 提供有关 SetWindowSubclass
的信息。
我通过为有问题的 window 处理 WM_SETCURSOR
并使用 SetCursor
.