Насколько я понимаю, ваша проблема не в том, чтобы скрыть курсор мыши, а в том, чтобы ограничить его окном?
В этом случае функция ClipCursor
должна выполнитьjob.
{
RECT windowRect;
GetWindowRect(hWnd, &windowRect);
ClipCursor(&windowRect);
}
Для полноэкранного окна без рамки, это должно быть хорошо сделать один раз.Вам нужно будет повторить этот шаг, если когда-либо изменяется положение или размер вашего окна или окно теряет фокус.
Для программирования игр, вероятно, существуют более эффективные методы, такие как DirectInput, который обеспечивает эксклюзивный режим обработки мыши ( учебные пособия доступны) и делает все это для вас на более низком уровне.
Существует несколько дискуссий о различных способах решения этой проблемы, например этот наФорумы MSDN .
Если, с другой стороны, вы хотите, чтобы курсор мог покинуть ваше окно и скрывать его только тогда, когда он находится над вашим окном, вы должны обработать WM_SETCURSOR
сообщение и используйте SetCursor
, чтобы скрыть курсор.
case WM_SETCURSOR:
SetCursor(NULL);
return TRUE;