DirectX でマウスクリック処理
Posted: 2015年7月12日(日) 13:31
DirectXでマウスクリック処理をしているですが、クリック自体は出来るようになったのですが、クリックした瞬間のみ反応いわゆるTriggerができません。
どなたかどうやればいいのか助言をください。
クリック処理のコードはこれです
HRESULT InitMouse(HINSTANCE hInstance,HWND hWnd)
{
if(FAILED(g_pInput->CreateDevice(GUID_SysMouse, &g_pDevMouse, NULL)))
{
return E_FAIL;
}
g_pDevMouse->SetDataFormat(&c_dfDIMouse2); //マウス用のデータ・フォーマット設定
g_pDevMouse->SetCooperativeLevel(hWnd, DISCL_NONEXCLUSIVE|DISCL_FOREGROUND);
DIPROPDWORD diprop;
diprop.diph.dwSize = sizeof(diprop);
diprop.diph.dwHeaderSize = sizeof(diprop.diph);
diprop.diph.dwObj = 0;
diprop.diph.dwHow = DIPH_DEVICE;
diprop.dwData = DIPROPAXISMODE_REL; // 相対値モードで設定(絶対値はDIPROPAXISMODE_ABS)
g_pDevMouse->SetProperty(DIPROP_AXISMODE, &diprop.diph);
g_pDevMouse->Acquire();
return S_OK;
}
/******************************************************************************
* 関数名 : UninitMouse
*
* 引数 : void
* 戻り値 : なし
* 説明 : 終了処理
*******************************************************************************/
void UninitMouse(void)
{
if(g_pDevMouse != NULL)
{
g_pDevMouse -> Unacquire();
g_pDevMouse = NULL;
}
}
/******************************************************************************
* 関数名 : UpdateMouse
*
* 引数 : void
* 戻り値 : なし
* 説明 : 更新処理
*******************************************************************************/
void UpdateMouse(void)
{
dIMouseState.rgbButtons[0] = 0;
g_pDevMouse->GetDeviceState(sizeof(DIMOUSESTATE2), &dIMouseState);
g_pDevMouse -> Acquire();
}
/******************************************************************************
* 関数名 : GetMouse
* 引数 : void
* 戻り値 : なし
* 説明 : 終了処理
*******************************************************************************/
bool GetMouse(int Mouse)
{
return (dIMouseState.rgbButtons[Mouse] & 0x80) ? true : false;
}
どなたかどうやればいいのか助言をください。
クリック処理のコードはこれです
HRESULT InitMouse(HINSTANCE hInstance,HWND hWnd)
{
if(FAILED(g_pInput->CreateDevice(GUID_SysMouse, &g_pDevMouse, NULL)))
{
return E_FAIL;
}
g_pDevMouse->SetDataFormat(&c_dfDIMouse2); //マウス用のデータ・フォーマット設定
g_pDevMouse->SetCooperativeLevel(hWnd, DISCL_NONEXCLUSIVE|DISCL_FOREGROUND);
DIPROPDWORD diprop;
diprop.diph.dwSize = sizeof(diprop);
diprop.diph.dwHeaderSize = sizeof(diprop.diph);
diprop.diph.dwObj = 0;
diprop.diph.dwHow = DIPH_DEVICE;
diprop.dwData = DIPROPAXISMODE_REL; // 相対値モードで設定(絶対値はDIPROPAXISMODE_ABS)
g_pDevMouse->SetProperty(DIPROP_AXISMODE, &diprop.diph);
g_pDevMouse->Acquire();
return S_OK;
}
/******************************************************************************
* 関数名 : UninitMouse
*
* 引数 : void
* 戻り値 : なし
* 説明 : 終了処理
*******************************************************************************/
void UninitMouse(void)
{
if(g_pDevMouse != NULL)
{
g_pDevMouse -> Unacquire();
g_pDevMouse = NULL;
}
}
/******************************************************************************
* 関数名 : UpdateMouse
*
* 引数 : void
* 戻り値 : なし
* 説明 : 更新処理
*******************************************************************************/
void UpdateMouse(void)
{
dIMouseState.rgbButtons[0] = 0;
g_pDevMouse->GetDeviceState(sizeof(DIMOUSESTATE2), &dIMouseState);
g_pDevMouse -> Acquire();
}
/******************************************************************************
* 関数名 : GetMouse
* 引数 : void
* 戻り値 : なし
* 説明 : 終了処理
*******************************************************************************/
bool GetMouse(int Mouse)
{
return (dIMouseState.rgbButtons[Mouse] & 0x80) ? true : false;
}