WEB开发网
开发学院软件开发VC MFC下DirectX DirectInput的实现 阅读

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。

接下来要进行一些设备的必要的设置,包括协作等级、数据格式以及游戏手柄特有的输入特性方面的设置。

上一页  3 4 5 6 7 8 9 10  下一页

Tags:MFC DirectX DirectInput

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接