MFC下DirectX DirectInput的实现
2007-03-22 21:31:38 来源:WEB开发网核心提示: 这里最主要的就是guidInstance了,它是你创建设备所必须的,MFC下DirectX DirectInput的实现(8),接下来是VOID* pvRef,它是一个32位指针,一般使用NULL,接下来要进行一些设备的必要的设置,你可以通过它把所进行的操作保存下来,上面的例子中
这里最主要的就是guidInstance了,它是你创建设备所必须的。
接下来是VOID* pvRef,它是一个32位指针,你可以通过它把所进行的操作保存下来。上面的例子中,在枚举函数里传递了JoystickGUID的地址到回调函数中,然后在回调函数中把扫描到的设备的GUID保存下来。 *(GUID*) pvRef = lpddi->guidInstance;
这个语句首先把pvRef转换为(GUID*)类型,然后使用*来赋值。
对于回调函数如何执行下面的操作,有两种方式:
#define DIENUM_STOP 0 //扫描后停止
#define DIENUM_CONTINUE 1 //扫描后继续
以上是枚举函数和回调函数的一些基本内容,当然你可以加入更多自己的操作在回调函数里面。
上面的例子中,我们枚举一个设备以后,在回调函数中保存了设备的GUID,然后立刻停止继续枚举扫描,来简单的实现我们的功能,当然如果你有很多的设备的话,你可以依次扫描每一个设备,保存他们每一个的GUID。
枚举和回调完成以后,就可以创建设备了。
//创建DI8设备
if(!m_lpDIDevice)
{
hr = m_lpDI->CreateDevice(JoystickGUID,&m_lpDIDevice,NULL);
if FAILED(hr)
{
OutputDebugString("创建设备失败 - in CDIJoystick::Initialise
");
return false;
}
}
创建设备是不是很简单,只要使用LPDIRECTINPUT8接口的CreateDevice成员函数就可以完成。参数也很简单,第一个为设备的GUID,就是枚举和回调中所保存的那个GUID,第二个为设备接口的地址,来保存设备的接口,第三个参数为系统保留,一般使用NULL。
接下来要进行一些设备的必要的设置,包括协作等级、数据格式以及游戏手柄特有的输入特性方面的设置。
Tags:MFC DirectX DirectInput
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接