关于GetDeviceState的一些疑问
这几天做键盘对象,发现一个问题。代码如下:
#include <dinput.h>
#pragma comment(lib,"dxguid.lib")
#pragma comment(lib,"dinput8.lib")
LPDIRECTINPUTDEVICE8 pInputKB=NULL;
LPDIRECTINPUT8 pInput = NULL;
char strkeystate[256];
char strkeystateold[256];
HRESULT InitKeyBorad(HINSTANCE hinstance,HWND hwnd)
{
if (DI_OK != DirectInput8Create(hinstance,DIRECTINPUT_VERSION,IID_IDirectInput8,(LPVOID*)&pInput,NULL))
{
return E_FAIL;
}
if(DI_OK != pInput->CreateDevice(GUID_SysKeyboard,&pInputKB,NULL))
{
return E_FAIL;
}
if(DI_OK != pInputKB->SetDataFormat(&c_dfDIKeyboard))
{
return E_FAIL;
}
pInputKB->SetCooperativeLevel(hwnd,DISCL_NONEXCLUSIVE|DISCL_FOREGROUND);
pInputKB->Acquire();
memset(strkeystate,0,sizeof(strkeystate));
memset(strkeystateold,0,sizeof(strkeystateold));
return S_OK;
}
LRESULT Update()
{
memcpy(strkeystateold,strkeystate,sizeof(strkeystate));
if(DI_OK != pInputKB->GetDeviceState(sizeof(strkeystate),strkeystate))//这里一直失败
{
MessageBox(NULL,TEXT("a"),TEXT("a"),MB_OK);
memset(&strkeystate,0,sizeof(strkeystate));
}
return DI_OK;
}
问题出来了,GetDeviceState函数一直失败,我调试了半天,也不知道问题出在哪。
DIERR_INVALIDPARAM 第一次运行,返回的是这个。
求救。。。。。。。。
设备没有丢失。。