MFC下DirectX DirectInput的实现
2007-03-22 21:31:38 来源:WEB开发网核心提示: 上面的例子中我们选择了前台独占模式,所以将DISCL_FOREGROUND|DISCL_EXCLUSIVE作为dwFlags参数的值,MFC下DirectX DirectInput的实现(10),接下来我们需要设置设备的数据格式,//设置数据格式hr = m_lpDIDevice->
上面的例子中我们选择了前台独占模式,所以将DISCL_FOREGROUND|DISCL_EXCLUSIVE作为dwFlags参数的值。
接下来我们需要设置设备的数据格式。
//设置数据格式
hr = m_lpDIDevice->SetDataFormat( &c_dfDIJoystick);
if FAILED(hr)
{
OutputDebugString("设置数据格式失败 - in CDIJoystick::Initialise
");
return false;
}
设置数据格式需要调用IDIRECTINPUTDEVICE8::SetDataFormat()来完成。设置数据格式的函数原型为HRESULT SetDataFormat(LPCDIDATAFORMAT lpdf);
lpdf是指向数据格式结构的指针。关于数据格式结构DIDATAFORMAT,这里不详细介绍了,可以参考SDK。DirectInput为我们设置了几种常规的数据格式,我们可以简单的利用它们来完成数据格式的设置。
c_dfDIMouse 通用鼠标
c_dfDIMouse2 通用鼠标2,在7.0以上版本使用
c_dfDIKeyboard 通用键盘
c_dfDIJoystick 通用游戏杆
c_dfDIJoystick2 通用游戏杆2,一般指力反馈设备
这里我们需要使用普通的游戏手柄,所以把c_dfDIJoystick的地址作为参数传递过去。
对于游戏手柄,我们还要设置它的输入特性。这里首先要对游戏手柄类型做一个简单的说明。前面我们并没有具体的区分游戏手柄和游戏杆,其实他们是有区别的。游戏手柄指我们常见的那种PS手柄,它的方向键也是一些电平开关。而游戏杆是摇杆式的手柄,属于一个模拟设备,在移动方向杆的时候输出的是一系列连续的值。如果你使用的是游戏手柄的话,因为它的方向仅仅是一些电平开关,那么读取它们的数据,你很容易就识别按键。如果使用的是游戏杆的话,那么读取出的连续的值到底表示什么意思,你必须提前设定。比如你可以设定X轴范围为-1024~+1024,Y轴范围为-128~+128,一切取决于你自己的意愿。
Tags:MFC DirectX DirectInput
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接