⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 d3dxinput.cpp

📁 DirectInput的基本实现 只是基本应用
💻 CPP
字号:
// 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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -