directx,怎样设置鼠标键盘的CooperativeLevel?

firendlys 2010-10-10 09:47:10
我用directx写一个程序,希望当窗口为活动窗口时能捕获鼠标键盘,当不是活动窗口时不再捕获.
使用 LPDIRECTINPUTDEVICE8::SetCooperativeLevel(hWnd,flags) 函数来设置?

函数的参数应该怎样写?

我试过, flags = DISCL_NONEXCLUSIVE | DISCL_BACKGROUND 的时候,是在任意时候捕获,即使当前窗口不是活动窗口.
而 flags = DISCL_NONEXCLUSIVE | DISCL_FOREGROUND 时,则仅在第一次是活动窗口的时候捕获.当切换到其他窗口,再切换回来的时候,就捕获不了....

很奇怪..

...全文
71 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
大拙男 2010-10-10
  • 打赏
  • 举报
回复
切回来的时候,你再Acquire一次
或者试试
DISCL_EXCLUSIVE | DISCL_FOREGROUND
dx9里面有个dinput的demo你研究下
firendlys 2010-10-10
  • 打赏
  • 举报
回复
读取键盘的函数:


bool CGameEngine_Input::ReadKeyboard() {
if(DIERR_INPUTLOST==m_pKeyboardDevice->GetDeviceState (
sizeof(m_KeyBuffer),(LPVOID)m_KeyBuffer)){
m_pKeyboardDevice->Acquire ();//....
if(FAILED(m_pKeyboardDevice->GetDeviceState (
sizeof(m_KeyBuffer),(LPVOID)m_KeyBuffer))){
return false;
}
}
return true;
}

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧