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

📄 hinput.h

📁 通过使机器人进行简单的图像识别
💻 H
字号:
/********************************************************************
*
* =-----------------------------------------------------------------=
* =                          ____          _________                =
* =                         / _  \         \___  __/                =
* =                        / /_/ /     ____   / /                   =
* =                       /  _   \ ● / _  \ / /                    =
* =                      /  /_/  // // / / // /                     =
* =                      \______//_//_/ /_//_/                      =
* =                                                                 =
* =             Copyright (c) BIN Technology studio,2004            =
* =                           LET'Z BT                              =
* =-----------------------------------------------------------------=
*
*	FileName	: hInput.h
*	Description	: 键盘和鼠标输入接口定义
*
*	Author		: 风间苍月(TuQbasic)
*	Email		: tuqbasic@sohu.com
*
*	Create		: 2003.08.07
*	LastChange	: 2004.02.03
*
*	History		: 
********************************************************************/ 
#pragma once

#include "hXFile.h"

// DirectInput虚拟键(键盘扫描码)
typedef unsigned char DIK;

// **************************************************************
// *------------------------键盘查询接口-------------------------
class IKeyBoard : public ITUnknown
{
public:
	virtual ~IKeyBoard(void) {}

	// 获取当前的键盘按键状态
	virtual void RecieveKeyboardInput(void) = 0;

	// 查询按键状态 cKey指定键盘扫描码

	// 是否被按下
	virtual bool IsKeyDown(DIK cKey) = 0;
	// 是否刚刚按下
	virtual bool IsUp2Down(DIK cKey) = 0;
	// 是否刚刚弹起
	virtual bool IsDown2Up(DIK cKey) = 0;
};
typedef IKeyBoard *	LPI_KEYBOARD;


// **************************************************************
// *------------------------鼠标查询接口-------------------------
class IMouse : public ITUnknown
{
public:
	virtual ~IMouse(void) {}

	// 获取当前的鼠标状态
	virtual void RecieveMouseInput(void) = 0;
	
	// 得到按钮的数目
	virtual long GetButtonCount(void) = 0;
	// 获得当前指针相对屏幕的绝对坐标
	virtual long GetMouseX(void) = 0;
	virtual long GetMouseY(void) = 0;

	// 获得与上一次ReciveMouseInput时鼠标的相对位移
	virtual long GetOffsetX(void) = 0;
	virtual long GetOffsetY(void) = 0;
	virtual long GetOffsetZ(void) = 0;

	// 按钮是否被按下
	virtual bool IsLeftButtonDown(void) = 0;
	virtual bool IsRightButtonDown(void) = 0;
	virtual bool IsMiddleButtonDown(void) = 0;

	// 是否由按下变为弹起
	virtual bool IsLeftDown2Up(void) = 0;
	virtual bool IsRightDown2Up(void) = 0;
	virtual bool IsMiddleDown2Up(void) = 0;

	// 是否由弹起变为按下
	virtual bool IsLeftUp2Down(void) = 0;
	virtual bool IsRightUp2Down(void) = 0;
	virtual bool IsMiddleUp2Down(void) = 0;
};
typedef IMouse * LPI_MOUSE;

// **************************************************************
// *------------------------创建键盘接口-------------------------
// *------------------------失败返回NULL-------------------------
SAM_API LPI_KEYBOARD	CreateKeyboard(HINSTANCE hInst/*程序实例句柄*/, HWND hWnd/*程序窗口句柄*/);

// **************************************************************
// *------------------------创建鼠标接口-------------------------
// *------------------------失败返回NULL-------------------------
SAM_API LPI_MOUSE		CreateMouse(HINSTANCE hInst/*程序实例句柄*/, HWND hWnd/*程序窗口句柄*/);

// 补充资料:

// ****************************************************************************
// *
// *      DirectInput键盘扫描码
// *
// ****************************************************************************

#define DIK_ESCAPE          0x01
#define DIK_1               0x02
#define DIK_2               0x03
#define DIK_3               0x04
#define DIK_4               0x05
#define DIK_5               0x06
#define DIK_6               0x07
#define DIK_7               0x08
#define DIK_8               0x09
#define DIK_9               0x0A
#define DIK_0               0x0B
#define DIK_MINUS           0x0C    // - on main keyboard
#define DIK_EQUALS          0x0D
#define DIK_BACK            0x0E    // backspace
#define DIK_TAB             0x0F
#define DIK_Q               0x10
#define DIK_W               0x11
#define DIK_E               0x12
#define DIK_R               0x13
#define DIK_T               0x14
#define DIK_Y               0x15
#define DIK_U               0x16
#define DIK_I               0x17
#define DIK_O               0x18
#define DIK_P               0x19
#define DIK_LBRACKET        0x1A
#define DIK_RBRACKET        0x1B
#define DIK_RETURN          0x1C    // Enter on main keyboard
#define DIK_LCONTROL        0x1D
#define DIK_A               0x1E
#define DIK_S               0x1F
#define DIK_D               0x20
#define DIK_F               0x21
#define DIK_G               0x22
#define DIK_H               0x23
#define DIK_J               0x24
#define DIK_K               0x25
#define DIK_L               0x26
#define DIK_SEMICOLON       0x27
#define DIK_APOSTROPHE      0x28
#define DIK_GRAVE           0x29    // accent grave
#define DIK_LSHIFT          0x2A
#define DIK_BACKSLASH       0x2B
#define DIK_Z               0x2C
#define DIK_X               0x2D
#define DIK_C               0x2E
#define DIK_V               0x2F
#define DIK_B               0x30
#define DIK_N               0x31
#define DIK_M               0x32
#define DIK_COMMA           0x33
#define DIK_PERIOD          0x34    // . on main keyboard
#define DIK_SLASH           0x35    // / on main keyboard
#define DIK_RSHIFT          0x36
#define DIK_MULTIPLY        0x37    // * on numeric keypad
#define DIK_LMENU           0x38    // left Alt
#define DIK_SPACE           0x39
#define DIK_CAPITAL         0x3A
#define DIK_F1              0x3B
#define DIK_F2              0x3C
#define DIK_F3              0x3D
#define DIK_F4              0x3E
#define DIK_F5              0x3F
#define DIK_F6              0x40
#define DIK_F7              0x41
#define DIK_F8              0x42
#define DIK_F9              0x43
#define DIK_F10             0x44
#define DIK_NUMLOCK         0x45
#define DIK_SCROLL          0x46    // Scroll Lock
#define DIK_NUMPAD7         0x47
#define DIK_NUMPAD8         0x48
#define DIK_NUMPAD9         0x49
#define DIK_SUBTRACT        0x4A    // - on numeric keypad
#define DIK_NUMPAD4         0x4B
#define DIK_NUMPAD5         0x4C
#define DIK_NUMPAD6         0x4D
#define DIK_ADD             0x4E    // + on numeric keypad
#define DIK_NUMPAD1         0x4F
#define DIK_NUMPAD2         0x50
#define DIK_NUMPAD3         0x51
#define DIK_NUMPAD0         0x52
#define DIK_DECIMAL         0x53    // . on numeric keypad
#define DIK_OEM_102         0x56    // <> or \| on RT 102-key keyboard (Non-U.S.)
#define DIK_F11             0x57
#define DIK_F12             0x58
#define DIK_F13             0x64    //                     (NEC PC98)
#define DIK_F14             0x65    //                     (NEC PC98)
#define DIK_F15             0x66    //                     (NEC PC98)
#define DIK_KANA            0x70    // (Japanese keyboard)           
#define DIK_ABNT_C1         0x73    // /? on Brazilian keyboard
#define DIK_CONVERT         0x79    // (Japanese keyboard)           
#define DIK_NOCONVERT       0x7B    // (Japanese keyboard)           
#define DIK_YEN             0x7D    // (Japanese keyboard)            
#define DIK_ABNT_C2         0x7E    // Numpad . on Brazilian keyboard
#define DIK_NUMPADEQUALS    0x8D    // = on numeric keypad (NEC PC98)
#define DIK_PREVTRACK       0x90    // Previous Track (DIK_CIRCUMFLEX on Japanese keyboard)
#define DIK_AT              0x91    //                     (NEC PC98)
#define DIK_COLON           0x92    //                     (NEC PC98)
#define DIK_UNDERLINE       0x93    //                     (NEC PC98)
#define DIK_KANJI           0x94    // (Japanese keyboard)           
#define DIK_STOP            0x95    //                     (NEC PC98)
#define DIK_AX              0x96    //                     (Japan AX)
#define DIK_UNLABELED       0x97    //                        (J3100)
#define DIK_NEXTTRACK       0x99    // Next Track
#define DIK_NUMPADENTER     0x9C    // Enter on numeric keypad
#define DIK_RCONTROL        0x9D
#define DIK_MUTE            0xA0    // Mute
#define DIK_CALCULATOR      0xA1    // Calculator
#define DIK_PLAYPAUSE       0xA2    // Play / Pause
#define DIK_MEDIASTOP       0xA4    // Media Stop
#define DIK_VOLUMEDOWN      0xAE    // Volume -
#define DIK_VOLUMEUP        0xB0    // Volume +
#define DIK_WEBHOME         0xB2    // Web home
#define DIK_NUMPADCOMMA     0xB3    // , on numeric keypad (NEC PC98)
#define DIK_DIVIDE          0xB5    // / on numeric keypad
#define DIK_SYSRQ           0xB7
#define DIK_RMENU           0xB8    // right Alt
#define DIK_PAUSE           0xC5    // Pause
#define DIK_HOME            0xC7    // Home on arrow keypad
#define DIK_UP              0xC8    // UpArrow on arrow keypad
#define DIK_PRIOR           0xC9    // PgUp on arrow keypad
#define DIK_LEFT            0xCB    // LeftArrow on arrow keypad
#define DIK_RIGHT           0xCD    // RightArrow on arrow keypad
#define DIK_END             0xCF    // End on arrow keypad
#define DIK_DOWN            0xD0    // DownArrow on arrow keypad
#define DIK_NEXT            0xD1    // PgDn on arrow keypad
#define DIK_INSERT          0xD2    // Insert on arrow keypad
#define DIK_DELETE          0xD3    // Delete on arrow keypad
#define DIK_LWIN            0xDB    // Left Windows key
#define DIK_RWIN            0xDC    // Right Windows key
#define DIK_APPS            0xDD    // AppMenu key
#define DIK_POWER           0xDE    // System Power
#define DIK_SLEEP           0xDF    // System Sleep
#define DIK_WAKE            0xE3    // System Wake
#define DIK_WEBSEARCH       0xE5    // Web Search
#define DIK_WEBFAVORITES    0xE6    // Web Favorites
#define DIK_WEBREFRESH      0xE7    // Web Refresh
#define DIK_WEBSTOP         0xE8    // Web Stop
#define DIK_WEBFORWARD      0xE9    // Web Forward
#define DIK_WEBBACK         0xEA    // Web Back
#define DIK_MYCOMPUTER      0xEB    // My Computer
#define DIK_MAIL            0xEC    // Mail
#define DIK_MEDIASELECT     0xED    // Media Select

// *
// *  Alternate names for keys, to facilitate transition from DOS.
// *

#define DIK_BACKSPACE       DIK_BACK            // backspace
#define DIK_NUMPADSTAR      DIK_MULTIPLY        // * on numeric keypad
#define DIK_LALT            DIK_LMENU           // left Alt
#define DIK_CAPSLOCK        DIK_CAPITAL         // CapsLock
#define DIK_NUMPADMINUS     DIK_SUBTRACT        // - on numeric keypad
#define DIK_NUMPADPLUS      DIK_ADD             // + on numeric keypad
#define DIK_NUMPADPERIOD    DIK_DECIMAL         // . on numeric keypad
#define DIK_NUMPADSLASH     DIK_DIVIDE          // / on numeric keypad
#define DIK_RALT            DIK_RMENU           // right Alt
#define DIK_UPARROW         DIK_UP              // UpArrow on arrow keypad
#define DIK_PGUP            DIK_PRIOR           // PgUp on arrow keypad
#define DIK_LEFTARROW       DIK_LEFT            // LeftArrow on arrow keypad
#define DIK_RIGHTARROW      DIK_RIGHT           // RightArrow on arrow keypad
#define DIK_DOWNARROW       DIK_DOWN            // DownArrow on arrow keypad
#define DIK_PGDN            DIK_NEXT            // PgDn on arrow keypad

⌨️ 快捷键说明

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