首页>
知识库>
详情

关于GetDeviceState()函数的问题

2020-08-04 来源:CloudBest 阅读量: 0
关键词:

    这几天做键盘对象,发现一个问题。代码如[来源:GameRes.com]下:

    #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 第一次运行,返回的是这个。

    求救……

    设备没有丢失……