MFC下DirectX DirectInput的实现
2007-03-22 21:31:38 来源:WEB开发网核心提示: 下面定义bool Joystick::Initialise(void )函数,这个函数的目的是进行类的初始化,MFC下DirectX DirectInput的实现(4),为了简单起见,我们把所有的必要的设置都放在初始化里面,程序是否支持UNICODE,IID_IDirectInput8的值
下面定义bool Joystick::Initialise(void )函数。这个函数的目的是进行类的初始化,为了简单起见,我们把所有的必要的设置都放在初始化里面。这样在外部定义一个类以后,我们只使用一个初始化函数就完成所有的设置。
首先定义一个HRESULT hr做为一些设置的返回值。
HRESULT hr;
然后建立DirectInput接口
//建立DI8接口
if(NULL == m_lpDI)
{
hr = DirectInput8Create(m_hInstance,
DIRECTINPUT_VERSION,
IID_IDirectInput8,
(void**)&m_lpDI, //接口取值
NULL);
if FAILED(hr)
{
OutputDebugString("Create 失败 - in CDIJoystick::Initialise
");
return false;
}
}
唯一需要说明的函数是DirectInput8Create(…)。先来看一下函数在dinput.h中的定义:
HRESULT WINAPI DirectInput8Create(
HINSTANCE hinst, //程序的主实例
DWORD dwVersion, //DirectInput版本
REFIID riidltf, //IID的引用
LPVOID *ppvOut, //接口取值,这个指针是保存接口的,所以双指针类型。
LPUNKNOWN punkOuter //系统保留,一般为NULL
);
这里首先需要讲解的是IID。在微软的COM编程里,每一个COM对象以及接口都必须有一个128位的标识符,用户可以通过这个标识符来申请对象或者接口。对于对象,这个标识符称为GUID(Globally Unique Identifiers,全局唯一标识符)。对于接口,这个标识符称为IID(Interface ID,接口标识符)。
对于上面的DirectInput8Create 函数,我们只需要传递IID_IDirectInput8常量给函数就可以。这个常量是在dinput.h中定义的。其中,程序是否支持UNICODE,IID_IDirectInput8的值是不同的,不过我们不需要考虑这些。
Tags:MFC DirectX DirectInput
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接