Скрытие курсора мыши в многоэкранной настройке - PullRequest
2 голосов
/ 20 июня 2011

Я пытаюсь скрыть курсор мыши с помощью Win32 API ShowCursor (FALSE), но при многоэкранной настройке, когда мышь попадает на другой экран, я не получаю никаких обновлений мыши в окнах, могу ли я вообще это предотвратить?

Это для полноэкранной видеоигры, и я не вижу ни одного windows api, который может сделать что-то подобное.

1 Ответ

1 голос
/ 25 июня 2011

Насколько я понимаю, ваша проблема не в том, чтобы скрыть курсор мыши, а в том, чтобы ограничить его окном?

В этом случае функция ClipCursor должна выполнитьjob.

{
    RECT windowRect;
    GetWindowRect(hWnd, &windowRect);
    ClipCursor(&windowRect);
}

Для полноэкранного окна без рамки, это должно быть хорошо сделать один раз.Вам нужно будет повторить этот шаг, если когда-либо изменяется положение или размер вашего окна или окно теряет фокус.

Для программирования игр, вероятно, существуют более эффективные методы, такие как DirectInput, который обеспечивает эксклюзивный режим обработки мыши ( учебные пособия доступны) и делает все это для вас на более низком уровне.

Существует несколько дискуссий о различных способах решения этой проблемы, например этот наФорумы MSDN .

Если, с другой стороны, вы хотите, чтобы курсор мог покинуть ваше окно и скрывать его только тогда, когда он находится над вашим окном, вы должны обработать WM_SETCURSOR сообщение и используйте SetCursor, чтобы скрыть курсор.

case WM_SETCURSOR:
    SetCursor(NULL);
    return TRUE;
...