下面定义bool Joystick::Initialise(void )函数。这个函数的目的是进行类的初始化,为了简单起见,我们把所有的必要的设置都放在初始化里面。这样在外部定义一个类以后,我们只使用一个初始化函数就完成所有的设置。 首先定义一个HRESULT hr做为一些设置的返回值。 HRESULT hr; 然后建立DirectInput接口 //建立DI8接口 唯一需要说明的函数是DirectInput8Create(…)。先来看一下函数在dinput.h中的定义: HRESULT WINAPI DirectInput8Create( 这里首先需要讲解的是IID。在微软的COM编程里,每一个COM对象以及接口都必须有一个128位的标识符,用户可以通过这个标识符来申请对象或者接口。对于对象,这个标识符称为GUID(Globally Unique Identifiers,全局唯一标识符)。对于接口,这个标识符称为IID(Interface ID,接口标识符)。 对于上面的DirectInput8Create 函数,我们只需要传递IID_IDirectInput8常量给函数就可以。这个常量是在dinput.h中定义的。其中,程序是否支持UNICODE,IID_IDirectInput8的值是不同的,不过我们不需要考虑这些。 另外的一个参数LPVOID *ppvOut是保存接口的指针。我们把成员变量m_lpDI赋值进去,这样就可以把接口保存下来。 punkOuter是系统保留的参数,一般设置为NULL就可以了。 hr保存了函数返回的信息,可以使用FAILED()或者SUCCEEDED()宏来判断是否成功。 OutputDebugString(…)可以用来在调试栏里输出信息,便于以后的调试。 接下来我们需要枚举(Enumeration)设备。枚举设备是游戏手柄特有的部分。它使用了一个回调函数,对于每一个检测到的设备,调用回调函数来处理相关的信息。说简单点,比如现在你的系统上有二三个游戏手柄设备,那么枚举函数可以依次检测这些设备,或者检测到一个就停止。检测到以后,Windows调用回调函数来处理这个设备的信息,比如你可以设置一个数据结构来保存所有的设备信息,或者其他你所希望的处理。一般来说,你应该在回调函数中处理设备的GUID,这样你才可以通过这个GUID来创建游戏手柄设备。枚举函数的原型为: HRESULT EnumDevices( |
正在阅读:MFC下DirectX DirectInput的实现MFC下DirectX DirectInput的实现
2005-07-27 10:07
出处:
责任编辑:moningfeng
键盘也能翻页,试试“← →”键