我用directx写一个程序,希望当窗口为活动窗口时能捕获鼠标键盘,当不是活动窗口时不再捕获.
使用 LPDIRECTINPUTDEVICE8::SetCooperativeLevel(hWnd,flags) 函数来设置?函数的参数应该怎样写?我试过, flags = DISCL_NONEXCLUSIVE | DISCL_BACKGROUND 的时候,是在任意时候捕获,即使当前窗口不是活动窗口.
而 flags = DISCL_NONEXCLUSIVE | DISCL_FOREGROUND 时,则仅在第一次是活动窗口的时候捕获.当切换到其他窗口,再切换回来的时候,就捕获不了....很奇怪..
使用 LPDIRECTINPUTDEVICE8::SetCooperativeLevel(hWnd,flags) 函数来设置?函数的参数应该怎样写?我试过, flags = DISCL_NONEXCLUSIVE | DISCL_BACKGROUND 的时候,是在任意时候捕获,即使当前窗口不是活动窗口.
而 flags = DISCL_NONEXCLUSIVE | DISCL_FOREGROUND 时,则仅在第一次是活动窗口的时候捕获.当切换到其他窗口,再切换回来的时候,就捕获不了....很奇怪..
解决方案 »
- 问一个问题:如果有个源码。。。。。。
- 一个stl模版的问题
- 大家帮忙看看,多文档应用程序,新建多个文档后,如何获得当前被激活的文档指针。
- 关于C/S模式C S之间的切换问题。
- VC自动生成的CSplashWnd如何做成淡入淡出的?
- 如何做的
- 请问我怎么保存客户区的图像啊?
- 请高手指点:如何在屏幕(通过屏幕DC)绘制边框及恢复(不通过刷新窗口的方式),类似spy++
- 如何动态改变控件的大小?
- 关于VC中ADO的连接!我是菜鸟,请帮忙,再线!
- XP如何在进入BOIS后的DOS界面启动自己的应用程序,然后再进入系统
- 我想HOOK住Notepad.exe的SetWindowPos, 请问用哪种方法最好?
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;
}
或者试试
DISCL_EXCLUSIVE | DISCL_FOREGROUND
dx9里面有个dinput的demo你研究下