当按下左右按钮时,我需要隐藏光标.事实证明我的代码按预期工作,除了鼠标移动的小故障.
当我调用ShowCursor(FALSE)时,光标会按预期隐藏.之后,当我调用ShowCursor(TRUE)时,光标不会再次出现,直到下一次鼠标移动.我的意见 - 直到鼠标事件发生才会绘制它.有没有办法强制重绘光标?
码:
void SG::CursorManager::hideCursor(void) {
while(ShowCursor(FALSE) >= 0);
}
void SG::CursorManager::showCursor(void) {
while(ShowCursor(TRUE) <= 0);
}
Run Code Online (Sandbox Code Playgroud)
如果我正确理解了光标在Windows中的工作方式,则必须立即调用SetCursor(IDC_...)光标.
事情是光标通常从下面的窗口设置,作为对消息的响应WM_SETCURSOR.其想法ShowCursor()是禁用/启用WM_SETCURSOR消息.当禁用cursr时,它也SetCursor(NULL)会使光标消失.但是当启用游标时它无法调用,SetCursor(IDC_...)因为它不知道应该显示哪个游标.所以它一直等到下一个WM_SETCURSOR生成,直到鼠标移动为止.