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

📄 directinput.h

📁 著名的任天堂FC游戏机模拟器VirtuaNes 085版的源码!
💻 H
字号:
//
// DirectInput class
//
#ifndef	__DIRECTINPUT_INCLUDED__
#define	__DIRECTINPUT_INCLUDED__

#define	WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <mmsystem.h>

#define	DIRECTINPUT_VERSION	0x0700
#include <dinput.h>

#include "typedef.h"
#include "macro.h"

#include <string>
using namespace std;

class	CDirectInput
{
public:
	// 僷僽儕僢僋儊儞僶曄悢
	typedef	struct	tagDIKEYTBL {
		WORD	key;
		LPCSTR	name;
	} DIKEYTBL, *LPDIKEYTBL;

	static	DIKEYTBL	DIKeyTable[];

	INT	m_nJoystickNum;
	enum { DIJOYSTICK_MAX = 16 };
	enum {
		DI_XAXIS  = 0, DI_YAXIS  = 2, DI_ZAXIS  = 4,
		DI_RXAXIS = 6, DI_RYAXIS = 8, DI_RZAXIS = 10,
		DI_MAXAXIS = 12,
		DI_BUTTON = 16
	};

	BYTE	m_Sw[256+64*DIJOYSTICK_MAX];
	LONG	m_JoyAxis[DIJOYSTICK_MAX][8];
	string	m_JoyName[DIJOYSTICK_MAX];

	static	LPSTR	DIKeyDirTable[];

	// 僷僽儕僢僋儊儞僶娭悢
	CDirectInput();
	virtual ~CDirectInput();

	BOOL	InitialDInput( HWND hWnd, HINSTANCE hInst );
	void	ReleaseDInput( void );

	void	Acquire();
	void	Unacquire();
	void	Poll();

	BOOL	AddJoystickDevice( GUID deviceguid );

	void	SetJoyAxisMode( LPWORD pMode ) {
		for( INT i = 0; i < DIJOYSTICK_MAX; i++ )
			m_JoyAxisMode[i] = pMode[i];
	};

	LPCSTR	SearchKeyName( INT key );
protected:
	// 僾儘僥僋僩儊儞僶曄悢
	LPDIRECTINPUT7		m_lpDI;
	LPDIRECTINPUTDEVICE	m_lpKeyboard;
	LPDIRECTINPUTDEVICE7	m_lpJoystick[DIJOYSTICK_MAX];

	WORD	m_JoyAxisMode[DIJOYSTICK_MAX];

	// 僾儘僥僋僩儊儞僶娭悢
	static	BOOL CALLBACK DIEnumDevicesCallback( LPDIDEVICEINSTANCE lpddi, LPVOID pvRef );
};

extern	CDirectInput	DirectInput;

#endif // !__DIRECTINPUT_INCLUDED__

⌨️ 快捷键说明

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