Я пытаюсь использовать DirectX Input для управления вводной мышью. Но когда я пытаюсь получить координаты X и Y моей мыши, значения являются неправильными (отрицательными или кажутся случайными).Входы управления Мышь с DirectX DirectInput
я покажу вам код, который я использовал:
bool System::frame()
{
bool result;
if (input->isButtonDown(BUTTON_L)) //if left button is down
{
result = ReadMouse();
if(!result)
return false;
ProcessInput();
}
}
bool System::ReadMouse()
{
HRESULT result;
//this->mouseState is a DIMOUSESTATE ; this->mouse is a LDIRECTINPUTDEVICE8
result = this->mouse->GetDeviceState(sizeof(DIMOUSESTATE), (LPVOID)&this->mouseState);
if(FAILED(result))
{
if((result == DIERR_INPUTLOST) || (result == DIERR_NOTACQUIRED))
this->mouse->Acquire();
else
return false;
}
return true;
}
void System::ProcessInput()
{
this->mouseX = this->mouseState.lX;
this->mouseY = this->mouseState.lY;
if(this->mouseX < 0)
this->mouseX = 0;
if(this->mouseY < 0)
this->mouseY = 0;
if(this->mouseX > this->ScreenWidth)
this->mouseX = this->ScreenWidth;
if(this->mouseY > this->ScreenHeight)
this->mouseY = this->ScreenHeight;
return;
}
Мой последний тест даст this->mouseX = -657
и this->mouseY = -36
вместо 200
и 200
(приблизительно). Я проверяю функцию, когда я инициализирую мышь, они, похоже, работают (я следил за учебником).