Question

I have a window that asks for Login/Password with five child windows:

  • An editable one: Login
  • Another editable one: Password
  • An OK button
  • A "forgot your password" one
  • And a "Register" one.

Basically, when you click on either of the last two, you are sent to a website where you can perform the appropriate actions.

It's all fine and dandy, but I would love to know how it's possible to check (with messages I guess) if the mouse cursor is hovering over one of the two links, and if that's the case, to change it to a hand cursor.

I'd especially like to know how to detect it! I can figure out how to change the cursor afterwards with SetCursor and such!

EDIT: I actually found out that WM_SETCURSOR is a really easy message to handle. Basically, you check if the wParam is equal to the handle of the child window it's hovering over and voilà!

But I actually find the SetCursor to be a bigger issue.

Here's what I did:

The declaration of my cursors:

static HCURSOR  hCursorHand;
static HCURSOR  hCursorArrow;

The value is set here (in the handle for WM_CREATE):

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

And here's where I set it:

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

I know the cursor is properly detected (thank you breakpoints), but it doesn't seem to do anything. The cursor stays an arrow...

Was it helpful?

Solution

So! As I said, I figured it out! (I just couldn't answer my question within the first 8 hours!)

Here's what I missed: (for anyone having the same problem)

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

I find the documentation on this API awful, so I hope my contribution will one day help someone in my situation! ;)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top