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

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()成员函数。另外需要注意的是,在归还设备前进行释放,将是破坏性的,所以一定要先归还,再释放。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:MFC DirectX DirectInput

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