小编Asa*_*ahi的帖子

悬停子窗口时更改光标

我有一个要求输入登录名/密码的窗口,其中有五个子窗口:

\n\n
    \n
  • 可编辑的:登录
  • \n
  • 另一个可编辑的:密码
  • \n
  • 一个确定按钮
  • \n
  • “忘记密码”一则
  • \n
  • 还有一个“注册”。
  • \n
\n\n

基本上,当您单击最后两个中的任何一个时,您将被发送到一个可以执行适当操作的网站。

\n\n

一切都很好,但我很想知道如何检查(我猜有消息)鼠标光标是否悬停在两个链接之一上,如果是这种情况,将其更改为手形光标。

\n\n

我特别想知道如何检测它!我可以弄清楚如何使用 SetCursor 等来更改光标!

\n\n

编辑:我实际上发现 WM_SETCURSOR 是一个非常容易处理的消息。基本上,您检查 wParam 是否等于它悬停在其上的子窗口的句柄,然后瞧\xc3\xa0!

\n\n

但我实际上找到了SetCursor是一个更大的问题。

\n\n

这就是我所做的:

\n\n

我的光标的声明:

\n\n
static HCURSOR  hCursorHand;\nstatic HCURSOR  hCursorArrow;\n
Run Code Online (Sandbox Code Playgroud)\n\n

该值在此处设置(在 WM_CREATE 的句柄中):

\n\n
hCursorHand = LoadCursor( NULL, IDC_HAND );\nhCursorArrow = LoadCursor( NULL, IDC_ARROW );\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我设置它的地方:

\n\n
else if (msg == WM_SETCURSOR)\n{\n    if ((HWND)wParam == hwndLinkFPasswd || (HWND)wParam == hwndLinkSignUp)\n        SetCursor(hCursorHand);\n    else\n        SetCursor(hCursorArrow);\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我知道光标已被正确检测到(谢谢断点),但它似乎没有做任何事情。光标保持箭头状态...

\n

c++ windows window mouse-cursor

2
推荐指数
1
解决办法
2937
查看次数

标签 统计

c++ ×1

mouse-cursor ×1

window ×1

windows ×1