gpt4 book ai didi

c++ - HWND 鼠标悬停时改变光标

转载 作者:搜寻专家 更新时间:2023-10-31 00:32:26 24 4
gpt4 key购买 nike

我需要在鼠标悬停在某个 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。有关简短示例,请参阅 Displaying a Cursor .

您需要子类化按钮以覆盖按钮的 WndProc 以处理 WM_SETCURSOR。使用 SetWindowSubclass对窗口进行子类化(然后在销毁按钮时用 RemoveWindowSubclass 删除子类化,以响应 WM_NCDESTROY——详情请参阅 Raymond Chen 的 Safer subclassing)。 SetWindowLongPtr不再推荐用于子类化窗口。

感谢@IInspectable 和@JonathanPotter 提供有关SetWindowSubclass 的信息。

关于c++ - HWND 鼠标悬停时改变光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31320016/

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