Мне нужно скрыть курсор, когда нажаты левая и правая кнопки. Оказывается, мой код работает как ожидалось, за исключением незначительного сглаживания с движением мыши.ShowCursor не действует до тех пор, пока мышь не будет перемещена.
Когда я вызываю курсор ShowCursor (FALSE), курсор скрывается, как ожидалось. После этого, когда я вызываю ShowCursor (TRUE), курсор не появляется снова до следующего перемещения мыши. Мое мнение - его просто не нарисовано до появления события мыши. Есть ли способ заставить курсор перерисовываться?
Код:
void SG::CursorManager::hideCursor(void) {
while(ShowCursor(FALSE) >= 0);
}
void SG::CursorManager::showCursor(void) {
while(ShowCursor(TRUE) <= 0);
}
Прохладный разъяснения. Но, к сожалению, это не сработало для моего дела. Я попытался SetCursor (LoadCursor (GetModuleHandle (NULL), IDC_HAND)), а также попытался установить положение курсора (SetCursorPos (current.x + 100, current.y);), чтобы искусственно запустить mousemove - ни одна из них не работала. Я использую OIS в качестве библиотеки входных событий. Как я знаю, он использует внутренний ввод по умолчанию. Может быть, это как-то связано с моей проблемой. – Alex
Есть ли способ генерировать искусственное сообщение WM_SETCURSOR? – Alex
@ user1480424: Вы можете отправить его вручную с помощью 'SendMessage()', но вам нужно выяснить, что такое 'wParam' и' lParam'. – rodrigo