-
Notifications
You must be signed in to change notification settings - Fork 0
/
conlib.h
131 lines (118 loc) · 2.59 KB
/
conlib.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/*
* Conlib v1.3
* Author: Wener
* E-mail: wenermail@gmail.com
* Site: http://blog.wener.me
*
* 一个windows下控制台编程的辅助库
*
*/
#include <stdbool.h>
#ifndef conlib_h
#define conlib_h
/* 鼠标按键 */
#define ConMOUSE_LEFT_BUTTON 1
#define ConMOUSE_1ST_BUTTON 1
#define ConMOUSE_RIGHT_BUTTON 2
#define ConMOUSE_CENTER_BUTTON 4
#define ConMOUSE_2ND_BUTTON 4
#define ConMOUSE_3RD_BUTTON 8
#define ConMOUSE_4TH_BUTTON 10
/* 键盘按键 */
/*
* 参见:
* http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
*/
#define ConKEY_BACKSPACE 0x8
#define ConKEY_TAB 0x9
#define ConKEY_ESCAPE 0x1B
#define ConKEY_SPACE 0x20
#define ConKEY_LEFT 0x25
#define ConKEY_UP 0x26
#define ConKEY_RIGHT 0x27
#define ConKEY_DOWN 0x28
#define ConKEY_RETURN 0x0D
#define ConKEY_CONTROL 0x11
#define ConKEY_ALT 0x12
/* 颜色常量 */
enum ConColor
{
ConRed = 1,
ConGreen = 2,
ConBlue = 4,
ConWhite = ConRed | ConGreen | ConBlue,
ConBlack = 0
};
/* 键盘控制键状态 */
typedef struct _ConControlKeyState
{
bool enhanced;
bool left_ctrl, right_ctrl;
bool left_alt, right_alt;
bool shift;
bool numlock,capslock,scrolllock;
} ConControlKeyState;
/* 鼠标输入 */
enum ConMouseEvent
{
ConMOUSE_MOVED
,ConMOUSE_CLICK
,ConMOUSE_DBCLICK
,ConMOUSE_HWHEELED
,ConMOUSE_WHEELED
,ConMOUSE_RELEASED
};
typedef struct _ConMouse
{
int x, y;
int button;
enum ConMouseEvent event;
ConControlKeyState *ctrl_key_state;
} ConMouse;
/* 键盘输入 */
typedef struct _ConKey
{
int key;
char ascii;
bool state;
ConControlKeyState *ctrl_key_state;
} ConKey;
/* 初始化 调用前必须先调用该函数 */
void conlib_init();
/* === 输入 === */
/* 获取键值 无输入时返回NULL */
const ConKey* getkey();
/* 获取鼠标 无输入时返回NULL */
const ConMouse* getmouse();
/* === 标题 === */
/* 设置窗口标题 */
bool settitle(const char *title);
/* 获取窗口标题 将标题写入str中 长度为len */
int gettitle(char *str, int len);
/* === 光标 === */
/* 隐藏光标 */
bool hide_cursor();
/* 显示光标 percent 为 0-100 即光标的大小 */
bool show_cursor(unsigned int percent);
/* === 色彩 === */
/* 设置文字颜色 */
bool set_text_color(enum ConColor color);
/* 设置背景颜色 */
bool set_background_color(enum ConColor color);
/* === 声音 === */
/* 蜂鸣声 参数为频率和时长 */
void beep(int frequence, int duration);
/* 开关声音 */
void beep_switch(bool turn);
/* 返回声音的开关状态 */
bool beep_state();
/* === 一些辅助函数 === */
/* 延迟 */
void delay( unsigned int delayMS);
/* 暂停输入 同 getch 因为pause为unistd中挂起进程的函数 避免冲突 */
char pausei();
/* 清空屏幕 */
void clrscr();
/* 光标跳转 */
void gotoxy(unsigned x, unsigned y);
#endif