Original Post
I''m trying to get what position the mouse is going (forward or backward)
I''m doing this by taking the DIMOUSESTATE::lX
but it dosent seems to work...
can you tell me what is wrong with this code?:
class CInput
{
private:
char Keys[256];
DIMOUSESTATE mouse_state;
IDirectInput8 *di;
IDirectInputDevice8 *di_keyboard;
IDirectInputDevice8 *di_mouse;
POINT pt;
public:
~CInput();
bool Init(HWND hWnd,HINSTANCE hInst);
void Update(void);
bool KeyDown(UINT Key);
long GetMouseX(void);
long GetMouseY(void);
bool MouseDown(UINT Button);
long GetMouseDeltaY(void);
long GetMouseDeltaX(void);
};
#include "global.h"
bool CInput::Init(HWND hWnd,HINSTANCE hInst)
{
if(FAILED(DirectInput8Create(hInst,DIRECTINPUT_VERSION,IID_IDirectInput8,(void**)&di,NULL)))
return FALSE;
if (FAILED(di->CreateDevice(GUID_SysKeyboard, &di_keyboard, NULL)))
return FALSE;
if (FAILED(di_keyboard->SetDataFormat(&c_dfDIKeyboard)))
return FALSE;
if (FAILED(di_keyboard->SetCooperativeLevel(hWnd, DISCL_BACKGROUND | DISCL_NONEXCLUSIVE)))
return FALSE;
if (FAILED(di_keyboard->Acquire()))
return FALSE;
if (FAILED(di->CreateDevice(GUID_SysMouse, &di_mouse, NULL)))
return FALSE;
if (FAILED(di_mouse->SetCooperativeLevel(hWnd, DISCL_BACKGROUND | DISCL_NONEXCLUSIVE)))
return FALSE;
if (FAILED(di_mouse->SetDataFormat(&c_dfDIMouse)))
return FALSE;
if (FAILED(di_mouse->Acquire()))
return FALSE;
return TRUE;
}
void CInput::Update(void)
{
GetCursorPos(&pt);
if (FAILED(di_keyboard->GetDeviceState(sizeof(char[256]), (LPVOID)Keys)))
PostQuitMessage(0);
if (FAILED(di_mouse->GetDeviceState(sizeof(DIMOUSESTATE), (LPVOID)&mouse_state)))
PostQuitMessage(0);
}
long CInput::GetMouseX(void)
{
this->Update();
return pt.x;
}
long CInput::GetMouseY(void)
{
this->Update();
return pt.y;
}
bool CInput::KeyDown(UINT Key)
{
this->Update();
if (Keys[Key] & 0x80)
return TRUE;
return FALSE;
}
bool CInput::MouseDown(UINT Button)
{
if(mouse_state.rgbButtons[Button] & 0x80)
return TRUE;
return FALSE;
}
long CInput::GetMouseDeltaY(void)
{
return mouse_state.lY;
}
long CInput::GetMouseDeltaX(void)
{
return mouse_state.lX;
}
CInput::~CInput()
{
di_mouse->Unacquire();
di_mouse->Release();
di_mouse = NULL;
di_keyboard->Unacquire();
di_keyboard->Release();
di_keyboard = NULL;
di->Release();
di = NULL;
}