|
为什么CreateKeyboard函数的参数为view类窗口的句柄时SetCooperativeLevel会失败,我到网上找了些资料,资料说要传递框架窗口的句柄,果然SetCooperativeLevel没问题,但是接下来的Acquire函数出错,函数返回值是E_ACCESSDENIED。请问有谁有什么办法解决啊,或者说在mfc框架下的view中绘图时,该怎样传递句柄来初始化d3d设备和directinput?这个问题困扰一天了,急啊,恳求指导啊
bool CInput::CreateKeyboard(HWND hWnd)
{
if(FAILED(DirectInput8Create(hInst,DIRECTINPUT_VERSION,IID_IDirectInput8,(void**)&m_pIDirectInput,NULL)))
{
return false;
}
//创建键盘输入设备
if(FAILED(m_pIDirectInput->CreateDevice(GUID_SysKeyboard,&m_pKeyboardDevice,NULL)))
{
return false;
}
//设置键盘输入设备的数据格式
if(FAILED(m_pKeyboardDevice->SetDataFormat(&c_dfDIKeyboard)))
{
return false;
}
//设置键盘输入设备的协调级别
if(FAILED(m_pKeyboardDevice->SetCooperativeLevel(hWnd,DISCL_FOREGROUND|DISCL_EXCLUSIVE/*DISCL_NONEXCLUSIVE*/)))
{
return false;
}
//获取键盘输入设备的访问权
if(FAILED(m_pKeyboardDevice->Acquire()))
{
return false;
}
//初始化键盘缓冲区
ZeroMemory(m_KeyBuffer,sizeof(char)*256);
return true;
} |
|