Hi,
I am having a bit trouble with DirectInput, "rgbButtons[0]" always returns the Button pressed state "0x80", even if my left mouse button ist NOT pressed. Can someone give me a hint, what's wrong in my code?
Here the Init-function:
if (FAILED(DirectInput8Create(
hInst,
DIRECTINPUT_VERSION,
IID_IDirectInput8,
(void**)&m_pDirinp,
NULL)))
{
return FALSE;
}
if (FAILED(m_pDirinp->CreateDevice(GUID_SysMouse, &m_pDirinpDevice,NULL)))
{
return FALSE;
}
if (FAILED(m_pDirinpDevice->SetDataFormat(&c_dfDIMouse)))
{
return FALSE;
}
if (FAILED(m_pDirinpDevice->SetCooperativeLevel(hWnd, DISCL_BACKGROUND | DISCL_NONEXCLUSIVE)))
{
return FALSE;
}
if (FAILED(m_pDirinpDevice->Acquire()))
{
MessageBox(0, "m_pDirinpDevice->Acquire()", "ERROR!", MB_OK);
return FALSE;
}
Here the function that ALWAYS sets bMouseButtonPressed = true:
int CInput::GetMousePos(bool &bMouseButtonPressed)
{
int iRet = 0;
HRESULT hres = 0;
hres = m_pDirinpDevice->Poll();
if (hres == DIERR_INPUTLOST)
m_pDirinpDevice->Acquire();
DIMOUSESTATE2 MouseState;
m_pDirinpDevice->GetDeviceState(sizeof(DIMOUSESTATE2), &MouseState);
long xPos = MouseState.lX;
long yPos = MouseState.lY;
// Button pressed?
if (MouseState.rgbButtons[0] & 0x80)
{
bMouseButtonPressed = true; // alway true. Why ?!
}
else
{
bMouseButtonPressed = false;
}
-Mouseposition-code snipped-
Thanks in advance!