md_input.h
来自「MDEngine2plus游戏开发库! 用来开发游戏超级简单!」· C头文件 代码 · 共 107 行
H
107 行
//********************************************************************
// MD 引擎 控制器 部件的定义
// Powered by @J--S Studio Johnhans 2004.7.15
//********************************************************************
#ifndef MD_INPUT_H
#define MD_INPUT_H
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#ifdef MDENGINE2P_EXPORTS
#define MDENGINE_API __declspec(dllexport)
#else
#define MDENGINE_API __declspec(dllimport)
#endif
#define DIRECTINPUT_VERSION 0x0700
#include <dinput.h>
#include "common.h"
class MDENGINE_API CMD_Input
{
public:
void EnableErrMSG(bool bshowerr); // 允许or禁止弹出错误信息
DWORD GetErrCode(void); // 得到错误代码
CMD_Input();
virtual ~CMD_Input();
bool Create(HWND hwnd, BYTE input); // 创建CMD_Input设备
void Update(void); // 检索当前有效设备的更新
bool IsInput(WORD btn,BYTE mode); // 检测玩家是否按了指定的键
WORD GetInput(BYTE mode,bool bAxis,bool bjoypri); // 取得用户按下的键(包括手柄)
void Acquire(bool acquire); // 释放或者锁定有效输入设备
void Free(); // 释放CMD_Input设备
LPDIRECTINPUT7 *GetDIObject(void); // 取得DirectInput实例
private:
LPDIRECTINPUT7 m_lpDI; // DINPUT设备
HWND m_hWnd; // 窗口句柄
bool m_bShowErrMSG; // 是否显示错误
DWORD m_ErrCode; // 当前错误代码
private:
void ShowErrMSG(); // 显示错误信息
//鼠标控制器
public:
bool CreateMouse(DWORD dwFlags=DISCL_NONEXCLUSIVE | DISCL_FOREGROUND); // 以指定方式建立鼠标设备
void FreeMouse(void); // 释放鼠标设备
void AcquireMouse(bool acqm); // 锁定、释放鼠标设备
bool UpdateMouse(void); // 检索更新鼠标的状态
int GetMouseLXY(WORD ax); // 取得鼠标的X或Y轴的偏移量
bool IsMouseDown(WORD btn,BYTE mode); // 检测鼠标的某个按键是否被按下
WORD GetNextMouseDown(BYTE mode,bool bAxis=false);// 取得下一个鼠标上有动作的键值
LPDIRECTINPUTDEVICE7 *GetMouseObject(void); // 取得鼠标的DIRECTINPUTDEVICE7设备
private:
LPDIRECTINPUTDEVICE7 m_lpMouse; // 鼠标设备
DIMOUSESTATE2 *m_lpdimsp; // 前次鼠标状态
DIMOUSESTATE2 *m_lpdimsn; // 当前鼠标状态
int m_iPosMouse[3];
//键盘控制器
public:
bool CreateKeyboard(DWORD dwFlags=DISCL_NONEXCLUSIVE | DISCL_FOREGROUND); // 以指定方式建立键盘设备
void FreeKeyboard(void); // 释放键盘设备
void AcquireKeyboard(bool acqm); // 锁定、释放键盘设备
bool UpdateKeyboard(void); // 检索更新键盘的状态
bool IsKeyDown(WORD key,BYTE mode); // 检测指定的键是否被按下
WORD GetNextKeyDown(BYTE mode); // 取得下一个键盘上有动作的键值
LPDIRECTINPUTDEVICE7 *GetKeyboardObject(void); // 取得键盘DIRECTINPUTDEVICE7
private:
LPDIRECTINPUTDEVICE7 m_lpKeyboard;// 键盘设备
BYTE *m_lpdiksp; // 前次鼠标状态
BYTE *m_lpdiksn; // 当前鼠标状态
int m_iPosKeyboard[3];
//游戏手柄控制器
public:
bool CreateJoystick(DWORD dwFlags=DISCL_EXCLUSIVE|DISCL_FOREGROUND); // 以指定方式建立手柄设备
void SetDeadzone(int ratio=5000); // 设置手柄的精确度(ratio越大精确度越低)
bool IsJoystickExist(void);
void FreeJoystick(void); // 释放手柄设备
void AcquireJoystick(bool acqm); // 锁定、释放手柄设备
bool UpdateJoystick(void); // 检索更新手柄的状态
int GetJoystickLXY(WORD ax); // 取得手柄的X或Y或Z轴偏移量
bool IsJoystickDown(WORD btn,BYTE mode); // 检测指定的按钮是否被按下
WORD GetNextJoystickDown(BYTE mode,bool bAxis=false); // 取得当前用户按下的全部按钮
LPDIRECTINPUTDEVICE7 *GetJoystickObject(void); // 取得手柄的DIRECTINPUTDEVICE7
private:
LPDIRECTINPUTDEVICE7 m_lpJoystick;// 游戏手柄设备
GUID guidJoystick;// 游戏手柄设备ID
DIJOYSTATE *m_lpdijsp; // 前次手柄状态
DIJOYSTATE *m_lpdijsn; // 当前手柄状态
int m_Deadzone; // 手柄方向杆的无效区域
int m_iPosJoystick[3];
};
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?