【问题标题】:Change cursor when hovering a child window悬停子窗口时更改光标
【发布时间】:2013-12-11 19:35:18
【问题描述】:

我有一个要求登录/密码的窗口有五个子窗口:

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

基本上,当您单击最后两个中的任何一个时,您会被转到一个网站,您可以在其中执行相应的操作。

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

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

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

但我实际上发现SetCursor 是一个更大的问题。

这就是我所做的:

我的游标声明:

static HCURSOR  hCursorHand;
static HCURSOR  hCursorArrow;

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

hCursorHand = LoadCursor( NULL, IDC_HAND );
hCursorArrow = LoadCursor( NULL, IDC_ARROW );

这是我设置它的地方:

else if (msg == WM_SETCURSOR)
{
    if ((HWND)wParam == hwndLinkFPasswd || (HWND)wParam == hwndLinkSignUp)
        SetCursor(hCursorHand);
    else
        SetCursor(hCursorArrow);
}

我知道光标已正确检测到(感谢断点),但它似乎没有做任何事情。光标停留在箭头上...

【问题讨论】:

  • 呃!设置光标后我只需要return(TRUE);! ^^'等8小时过去了我会加答案的!

标签: c++ windows window mouse-cursor


【解决方案1】:

所以!正如我所说,我想通了! (我只是无法在前 8 小时内回答我的问题!)

这是我错过的:(对于任何有同样问题的人)

else if (msg == WM_SETCURSOR)
{
    if ((HWND)wParam == hwndLinkFPasswd || (HWND)wParam == hwndLinkSignUp)
    {
        SetCursor(hCursorHand);
        return(TRUE);
    }
}

我觉得这个 API 的文档很糟糕,所以我希望我的贡献有一天能帮助到我这种情况的人! ;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 2015-09-27
    • 2021-11-27
    • 2020-10-07
    相关资源
    最近更新 更多