📄 cdinput.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 + -