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

📄 cdinput.h

📁 这个例子告诉你2d Arpg游戏中的动态阴影如何生成
💻 H
字号:
// CDInput.h: interface for the CDInput class.
//
//////////////////////////////////////////////////////////////////////

#ifndef CDInput_h
#define CDInput_h

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <windows.h>
#include <dinput.h>

///////////////////////////////////////////////////////////////
//DirectInput8 健盘,鼠标类的基类
///////////////////////////////////////////////////////////////
class CDInput  
{
public:
	CDInput();
	virtual ~CDInput();
	
	static bool InitDInput( HINSTANCE hInstance );
	static void FreeDInput();
protected:
	static LPDIRECTINPUT8	g_lpDI;					//DirectInput8 obj
	static int				g_iRef;					//引用计数
};



/////////////////////////////////////////////////////////////////
//DirectInput8 的健盘类
/////////////////////////////////////////////////////////////////
class CDIKeyBoard  : public CDInput
{
public:
	CDIKeyBoard();
	~CDIKeyBoard();

	bool Init( HWND hwnd, HINSTANCE hInstance );	//初始化健盘
	void Free();									

	void UpdateKeyBoard();							//更新健盘状态

	bool IsKeyDown( int key_id )					//判断一个健是否按下
	{ 
		if (m_KeyBuffer[key_id] & 0x80)
			return true;
		else 
			return false;
	}		

	bool IsKeyRelease( int key_id );				//判断一个健是否按下又松开
	bool IsKeyPress( int key_id );

	void OnActive() { if ( m_lpKeyBoardDevice ) m_lpKeyBoardDevice->Acquire(); }
	void OnInactive() { if ( m_lpKeyBoardDevice ) m_lpKeyBoardDevice->Unacquire(); }

private:
	
	LPDIRECTINPUTDEVICE8	m_lpKeyBoardDevice;		//key board device;

	BYTE *m_KeyStateBuffer;	//健位状态缓冲区
	BYTE *m_KeyBuffer;		//健盘缓冲区

};


/////////////////////////////////////////////////////////////////
//DirectInput8 的鼠标类
/////////////////////////////////////////////////////////////////
class CDIMouse	: public CDInput
{
public:
	CDIMouse();
	~CDIMouse();

	bool Init( HWND hwnd, HINSTANCE hInstance );
	void Free();
	void Reset();

	void UpdateMouse( HWND hwnd );

	int  GetX() { return m_MousePoint.x; }
	int  GetY()	{ return m_MousePoint.y; }
	bool IsLDown() { return m_IsLBDown; }
	bool IsRDown() { return m_IsRBDown; }

	bool IsLRelease(){ return m_IsLRelease; }
	bool IsRRelease(){ return m_IsRRelease; }

	bool IsLPress() { return m_IsLPress; }
	bool IsRPress()	{ return m_IsRPress; }

	bool IsMoving()	{ return m_IsMoving; }

	void OnActive() { if ( m_lpDIMouse ) m_lpDIMouse->Acquire(); }
	void OnInactive() { if ( m_lpDIMouse ) m_lpDIMouse->Unacquire(); }

private:
	LPDIRECTINPUTDEVICE8	m_lpDIMouse;

	POINT	m_MousePoint;
	bool	m_IsRBDown;
	bool	m_IsLBDown;

	bool	m_IsLRelease;
	bool	m_IsRRelease;

	bool	m_IsLPress;
	bool	m_IsRPress;

	bool	m_bLBState;
	bool	m_bRBState;

	bool	m_IsMoving;
	HANDLE					m_hMouseEvent;	//鼠标事件句柄
};
#endif 

⌨️ 快捷键说明

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