Я ищу положение курсора во время основного цикла моего приложения / игры.
Из некоторых исследований, похоже, есть два способа сделать это: во-первых, прослушивание события WM_MOUSEMOVE и проверка lParam.Во-вторых, используя GetCursorPos (), затем следуя за ним с ScreenToClient ().
У меня есть окно, которое настроено на 1680x1050, однако при просмотре данных, которые поступают из любого метода, я получаюзначение около 1660 в самой правой части окна.
Мне не удалось найти какой-либо ресурс, объясняющий, почему это может происходить, и мне интересно, имеет ли это какое-либо отношение к созданию окна?
Это код, который яЯ использую для создания окна для моего приложения
//Register the window class
WNDCLASS windowClass;
windowClass = {};
windowClass.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
windowClass.lpfnWndProc = handleWindowMessages;
windowClass.hInstance = hInstance;
windowClass.hCursor = LoadCursor(nullptr, IDC_ARROW);
windowClass.lpszClassName = L"D3D11 Rendering";
if (!RegisterClass(&windowClass))
{
return 0;
}
//Create the window
HWND windowHandle
= CreateWindowEx(0,
windowClass.lpszClassName,
L"D3D11 Rendering",
(WS_OVERLAPPEDWINDOW ^ WS_THICKFRAME) | WS_VISIBLE, //According to stackoverflow.com WS_OVERLAPPEDWINDOW ^ (XOR) WS_THICKFRAME will prevent window resizing
CW_USEDEFAULT,
CW_USEDEFAULT,
gResolutionX,
gResolutionY,
0, 0, hInstance, 0);
Затем в основном цикле я делаю следующее:
POINT p;
GetCursorPos(&p);
ScreenToClient(windowHandle, &p);
Будем благодарны за любые указатели, советы или информацию.
Редактировать: Окно приложений не развернуто и / или поверх панели задач.Проблема возникает на обеих осях, х и у.Я заметил, что строка заголовка вверху удерживает позицию y на 0, пока курсор находится внутри нее.Есть ли способ добраться до области визуализации экрана?При создании окна с разрешением, в котором я хочу запустить мою игру, я ожидаю, что бит посередине (не уверен в реальной терминологии - бит без границ и строки заголовка) будет соответствовать разрешению.