📄 keyboard.h
字号:
#ifndef _KEYBOARD_H
#define _KEYBOARD_H
/********************************************************************
文件名: KEYBOARD.h
Copyright (c)2004 红孩儿工作室
创建人 : 卞安
创建时间: 2004-5-18 12:33:30
版本: 1.0
类名: CKEYBOARD
说明:
键盘输入类
********************************************************************/
#include "dinput.h"
#include <windows.h>
#include "MYLOG.h"
#include "CControl.h"
//---------------------------------------------------------------
/** KEYBOARD 类.
* 键盘类
*/
class CKEYBOARD
{
HRESULT hr; /*返回结果用的句柄 */
LPDIRECTINPUT8 m_lpDI; /*对应的DINPUT对象 */
LPDIRECTINPUTDEVICE8 m_lpDIDevice ;/*创建的设备对象 */
CMYLOG m_Log;/**文件日志 */
CControl *m_control;
CControl *m_control2;
public:
/** 构造函数.
* 初始化成员变量
*/
CKEYBOARD();
/** 析构函数.
* 初始化成员变量
*/
~CKEYBOARD();
/**!\brief
*初始化键盘设备
*\param hWnd代表主窗口
*\return 如果成功返回true,否则false
*/
bool initKeyboard(HWND hWnd);
/**!\brief
*键盘数据处理
*\return 返回键盘值
*/
int ProcessKBInput()
{
char buffer[256];
//-------------------取用输入状态----------------
hr=m_lpDIDevice->GetDeviceState(sizeof(buffer),(LPVOID)&buffer);
if FAILED(hr)
{
m_Log.Write("取用输入状态失败(键盘)");
CleanUpDirectInput();
}
int m_keychar[2];
m_keychar[0]=0;
m_keychar[1]=0;
if(buffer[m_control2->iUpKey]&0X80)
{
m_keychar[1]=1;
}
if(buffer[m_control2->iDownKey]&0x80)
{
m_keychar[1]=2;
}
if(buffer[m_control2->iLeftKey]&0x80)
{
m_keychar[1]=3;
}
if(buffer[m_control2->iRightKey]&0x80)
{
m_keychar[1]=4;
}
if(buffer[m_control2->iEndKey]&0x80)
{
m_keychar[1]=5;
}
if(buffer[m_control->iUpKey]&0X80)
{
m_keychar[0]=1;
}
if(buffer[m_control->iDownKey]&0x80)
{
m_keychar[0]=2;
}
if(buffer[m_control->iLeftKey]&0x80)
{
m_keychar[0]=3;
}
if(buffer[m_control->iRightKey]&0x80)
{
m_keychar[0]=4;
}
if(buffer[m_control->iEndKey]&0x80)
{
m_keychar[0]=5;
}
return m_keychar[0]*10+m_keychar[1];
}
/**!\brief
*清空资源
*/
void CleanUpDirectInput();
/**!\brief
*设置键盘
*/
void SetKey(int ,CControl *);
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -