MFC下DirectX DirectInput的实现
2007-03-22 21:31:38 来源:WEB开发网核心提示: //设置协作等级—— 前台模式 | 独占模式hr = m_lpDIDevice ->SetCooperativeLevel(m_hWnd,DISCL_FOREGROUND|DISCL_EXCLUSIVE);if FAILED(hr){OutputDebugSt
//设置协作等级—— 前台模式 | 独占模式
hr = m_lpDIDevice ->SetCooperativeLevel(m_hWnd,DISCL_FOREGROUND|DISCL_EXCLUSIVE);
if FAILED(hr)
{
OutputDebugString("设置协作等级失败 - in CDIJoystick::Initialise
");
return false;
}
首先介绍协作等级。设置协作等级函数原型为:
HRESULT SetCooperativeLevel(
HWND hwnd , //窗口句柄
DWORD dwFlags //协作标志
);
对于协作标志,主要有以下一些选择:
DISCL_BACKGROUND 后台模式:应用程序在前台和后台都能够使用DirectInput设备
DISCL_FOREGROUND 前台模式:应用程序要求前台访问。如果应用程序转到后台,那么应用程序将失去对DirectInput设备的控制
DISCL_EXCLUSIVE 独占模式:应用程序获得设备,则其他的程序将不能对其申请独占访问。但可以申请非独占访问。
DISCL_NONEXCLUSIVE 非独占模式:应用程序请求非独占访问设备。
前台协作等级表明只有应用程序在前台,或者换句话说,只有获得了输入的焦点,那么程序才能读取数据。如果程序到了后台,那么设备自动的丢失,或者不可用。
后台协作等级表明无论在前台还是后台,程序都可以在任何时候读取数据,获得输入。
独占模式防止其他的程序独占设备。事实上,如果你的程序使用了独占模式占用设备,并不表示其他的程序不能从设备读取数据。当一个程序独占了键盘的输入,DirectInput将禁止包括Windows键在内的所有的键盘消息,除了CTRL+ALT+DEL 和 ALT+TAB 这两种键盘消息。
非独占模式表明其他的应用程序可以独占或非独占的获得设备。Windows键消息仍被禁止,以防止用户不小心跳出程序。
Tags:MFC DirectX DirectInput
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接