0

当左右按钮都被按下时,我需要隐藏光标。事实证明,除了鼠标移动出现小故障外,我的代码按预期工作。

当我调用 ShowCursor(FALSE) 时,光标会按预期隐藏。之后,当我调用 ShowCursor(TRUE) 时,光标不会再次出现,直到下一次鼠标移动。我的意见 - 它只是在鼠标事件发生之前才绘制。有没有办法强制重绘光标?

代码:

void SG::CursorManager::hideCursor(void) {
    while(ShowCursor(FALSE) >= 0);
}

void SG::CursorManager::showCursor(void) {
    while(ShowCursor(TRUE) <= 0);
}
4

1 回答 1

6

如果我正确理解光标在 Windows 中的工作原理,您必须调用SetCursor(IDC_...)以使光标立即可见。

问题是光标通常从下面的窗口设置,作为对 message 的响应WM_SETCURSOR。的想法ShowCursor()是它禁用/启用WM_SETCURSOR消息。禁用光标时,它也SetCursor(NULL)会使光标消失。但是当启用光标时它不能调用SetCursor(IDC_...),因为它不知道应该显示哪个光标。所以它一直等到下一个WM_SETCURSOR生成,直到鼠标移动。

于 2013-07-22T09:37:41.700 回答