d3dxinput.cpp

来自「DirectInput的基本实现 只是基本应用」· C++ 代码 · 共 134 行

CPP
134
字号
// D3dxInput.cpp: implementation of the CD3dxInput class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "D3dxInput.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

_CD3dxInput::_CD3dxInput()
{
	m_pKeyboard = NULL;
	m_pMouse = NULL;
}

_CD3dxInput::~_CD3dxInput()
{
	CleanUpDirectInputDevice();
}

//获得键盘设备
LPDIRECTINPUTDEVICE8 _CD3dxInput::GetKeyboardDevice()
{
	return m_pKeyboard;
}

//获得鼠标设备
LPDIRECTINPUTDEVICE8 _CD3dxInput::GetMouseDevice()
{
	return m_pMouse;
}

void _CD3dxInput::CleanUpDirectInputDevice()
{
	if(m_pKeyboard)
	{
		m_pKeyboard->Unacquire(); 
	}

	if(m_pMouse)
	{
		m_pMouse->Unacquire();
	}

	SAFE_RELEASE(m_pMouse);
	SAFE_RELEASE(m_pKeyboard);
}

//初始化键盘设备
HRESULT _CD3dxInput::InitKeyboard()
{
	HRESULT hr;
	//Create the keyboard device object
	if(FAILED(hr = m_pDI->CreateDevice(GUID_SysKeyboard, &m_pKeyboard, NULL))) 
	{ 
		CleanUpDirectInputDevice();
		return hr; 
	}

	//Set the data format for the keyboard
	if(FAILED(hr = m_pKeyboard->SetDataFormat(&c_dfDIKeyboard)))
	{ 
		CleanUpDirectInputDevice();
		return hr; 
	}

	//Set the cooperative level for the keyboard
	if(FAILED(hr = m_pKeyboard->SetCooperativeLevel(m_hWnd, DISCL_FOREGROUND | DISCL_NONEXCLUSIVE)))
	{ 
		CleanUpDirectInputDevice();
		return hr;
	}

	//Acquire the keyboard
	if(m_pKeyboard)
	{
		m_pKeyboard->Acquire(); 
	}

	return S_OK;
}

//初始化鼠标设备
HRESULT _CD3dxInput::InitMouse()
{
	HRESULT hr;
	//Create the mouse device object
	if(FAILED(hr = m_pDI->CreateDevice(GUID_SysMouse, &m_pMouse, NULL)))
	{ 
		CleanUpDirectInputDevice();
		return hr; 
	}

	//Set the data format for the mouse
	if(FAILED(hr = m_pMouse->SetDataFormat(&c_dfDIMouse)))
	{ 
		CleanUpDirectInputDevice();
		return hr; 
	}

	//Set the cooperative level for the mouse
	if(FAILED(hr = m_pMouse->SetCooperativeLevel(m_hWnd, DISCL_FOREGROUND | DISCL_NONEXCLUSIVE)))
	{ 
		CleanUpDirectInputDevice();
		return hr;
	}

	//Acquire the mouse
	if(m_pMouse)
	{
		m_pMouse->Acquire(); 
	}

	return S_OK;
}

HRESULT _CD3dxInput::Create(LPDIRECTINPUT8 pDI, HWND hWnd)
{
	m_pDI = pDI;
	m_hWnd = hWnd;
	
	HRESULT hr;

	if(FAILED(hr = InitKeyboard()))
		return hr;

	if(FAILED(hr = InitMouse()))
		return hr;

	return S_OK;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?