MFC下DirectX DirectInput的实现
2007-03-22 21:31:38 来源:WEB开发网核心提示: 这些变量的意义都说明的很清楚,后面我们用到的时候,MFC下DirectX DirectInput的实现(3),我会更加详细的说明每个变量的使用,下面我们也声明所需要用到的一些基本的成员函数,将是破坏性的,所以一定要先归还,如下://成员函数bool Initialise(void); //
这些变量的意义都说明的很清楚,后面我们用到的时候,我会更加详细的说明每个变量的使用。下面我们也声明所需要用到的一些基本的成员函数,如下:
//成员函数
bool Initialise(void); //初始化函数
//枚举设备
static BOOL CALLBACK DIEnumDevicesCallback(const DIDEVICEINSTANCE* lpddi, VOID* pvRef); //枚举对象
static BOOL CALLBACK EnumObjectsCallback( const DIDEVICEOBJECTINSTANCE* pdidoi, VOID* pContext );
HRESULT PollDevice(void); // 轮循设备函数,在轮循过程中读取设备状态
同样以后我们也会慢慢用到这些函数,到时候再详细的讲解他们的使用。这里强调的是这些都是一些基本的成员函数,你完全可以根据自己的应用添加其他的内容,只要你理解了DirectInput是如何工作的。
先来看看构造和析构函数的定义:
Joystick::Joystick(void)
{
m_lpDIDevice = NULL;
m_lpDI = NULL;
m_hWnd = NULL;
m_hInstance = GetModuleHandle(NULL) ; //获取实例句柄
}
Joystick::~Joystick(void)
{
if(m_lpDIDevice)
m_lpDIDevice->Unacquire();
//释放DI和DIDevice对象
if(m_lpDIDevice)
{
m_lpDIDevice->Release();
m_lpDIDevice = NULL;
}
if(m_lpDI)
{
m_lpDI->Release();
m_lpDI = NULL;
}
}
需要说明的是析构函数。输入设备的使用是需要获取的,当进行一系列的设置以后,应该使用IDirectInputDevice8::Acquire()来获取设备或者重获取设备(Acquire)。当不再需要设备了,则应该先归还(Unacquire)设备,然后再释放设备接口,最后再释放IDirectInput8接口。取消设备的获取,使用IDirectInputDevice8::Unacquire ()成员函数,释放设备接口资源使用IDirectInputDevice8::Release()成员函数,释放IDirectInput8接口,使用IDirectInput8::Release()成员函数。另外需要注意的是,在归还设备前进行释放,将是破坏性的,所以一定要先归还,再释放。
Tags:MFC DirectX DirectInput
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接