MFC下DirectX DirectInput的实现
2007-03-22 21:31:38 来源:WEB开发网核心提示: 其他的一些信息请参考SDK,这里我们传递给枚举设备函数DI8DEVCLASS_GAMECTRL,用来识别我们的游戏手柄,MFC下DirectX DirectInput的实现(6),参数lpCallback为回调函数的函数名,这样枚举函数就知道如何去通过Windows来调用函数,我们将传递J
其他的一些信息请参考SDK,这里我们传递给枚举设备函数DI8DEVCLASS_GAMECTRL,用来识别我们的游戏手柄。
参数lpCallback为回调函数的函数名,这样枚举函数就知道如何去通过Windows来调用函数,做出相应的处理了。pvRef为32位的指针,来返回信息值。注意它的类型为LPVOID,所以你可以自定义任意的一个数据结构,然后传递这个结构的指针给枚举函数。在回调函数中,这个指针也将作为一个参数传递过去,然后你可以在回调函数中对这个指针指向的数据结构进行修改或其他的操作,来完成你所要完成的任务。
dwFlags控制枚举函数如何扫描,是扫描所有设备,还是扫描安装和连接好的设备,还是扫描力反馈设备。dwFlags的取值如下:
#define DIEDFL_ALLDEVICES 0x00000000 //扫描所有设备
#define DIEDFL_ATTACHEDONLY 0x00000001 //扫描安装和连接好的设备
#define DIEDFL_FORCEFEEDBACK 0x00000100 //扫描力反馈设备
这里我们选择扫描安装和连接好的设备DIEDFL_ATTACHEDONLY 。最后的代码如下:
hr = m_lpDI->EnumDevices( DI8DEVCLASS_GAMECTRL,
DIEnumDevicesCallback, //回调函数
&JoystickGUID, //赋值GUID
DIEDFL_ATTACHEDONLY ); //扫描安装好的和连接好的设备
if FAILED(hr)
{
OutputDebugString("枚举设备失败 - in CDIJoystick::Initialise
");
return false;
}
DIEnumDevicesCallback为回调函数的函数名,在回调函数中,我们将传递JoystickGUID 的地址过去,然后把检测到的游戏手柄的GUID保存下来,为我们以后申请COM对象、创建设备做准备。
Tags:MFC DirectX DirectInput
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接