void DInputClass::GetInput()
{
HRESULT hr = m_KeyboardDevice->GetDeviceState(sizeof(m_keyBuffer), (void**)&m_keyBuffer); //在这里提示错误了
//获取键盘输入消息
if(hr)
{
m_KeyboardDevice->Acquire();
m_KeyboardDevice->GetDeviceState( sizeof(m_keyBuffer),(LPVOID)m_keyBuffer );
}
hr = m_MouseDevice->GetDeviceState(sizeof(DIMOUSESTATE), (void**)&m_MouseState);
//获取鼠标输入消息
if(hr)
{
m_MouseDevice->Acquire();
m_MouseDevice->GetDeviceState( sizeof(DIMOUSESTATE), (void**)&m_MouseState);
}
}
请问出了什么问题?在其他的程序可以跑。。。
m_keyboarddevice估计不是正确的指针,你没有正确获取到。
检查下,对象没有初始化正确分配内存
按F5来运行程序,看看断在哪儿了,看下堆栈调用窗口和内存检测区域,应该是空指针之类的错误
应该用if(SUCCEEDED(hr))
你这个if里面代码现在在HRESULT包含错误值的时候才会执行,在值是正确而且为S_OK的时候反而不执行。
m_keyBuffer有正确内容么___