1 |
#ifndef _WINCON_H |
2 |
#define _WINCON_H |
3 |
#if __GNUC__ >= 3 |
4 |
#pragma GCC system_header |
5 |
#endif |
6 |
|
7 |
#ifdef __cplusplus |
8 |
extern "C" { |
9 |
#endif |
10 |
|
11 |
#define FOREGROUND_BLUE 1 |
12 |
#define FOREGROUND_GREEN 2 |
13 |
#define FOREGROUND_RED 4 |
14 |
#define FOREGROUND_INTENSITY 8 |
15 |
#define BACKGROUND_BLUE 16 |
16 |
#define BACKGROUND_GREEN 32 |
17 |
#define BACKGROUND_RED 64 |
18 |
#define BACKGROUND_INTENSITY 128 |
19 |
#if (_WIN32_WINNT >= 0x0501) |
20 |
#define CONSOLE_FULLSCREEN_MODE 1 |
21 |
#define CONSOLE_WINDOWED_MODE 2 |
22 |
#endif |
23 |
#define CTRL_C_EVENT 0 |
24 |
#define CTRL_BREAK_EVENT 1 |
25 |
#define CTRL_CLOSE_EVENT 2 |
26 |
#define CTRL_LOGOFF_EVENT 5 |
27 |
#define CTRL_SHUTDOWN_EVENT 6 |
28 |
#define ENABLE_LINE_INPUT 2 |
29 |
#define ENABLE_ECHO_INPUT 4 |
30 |
#define ENABLE_PROCESSED_INPUT 1 |
31 |
#define ENABLE_WINDOW_INPUT 8 |
32 |
#define ENABLE_MOUSE_INPUT 16 |
33 |
#define ENABLE_INSERT_MODE 32 |
34 |
#define ENABLE_QUICK_EDIT_MODE 64 |
35 |
#define ENABLE_EXTENDED_FLAGS 128 |
36 |
#define ENABLE_AUTO_POSITION 256 |
37 |
#define ENABLE_PROCESSED_OUTPUT 1 |
38 |
#define ENABLE_WRAP_AT_EOL_OUTPUT 2 |
39 |
#define KEY_EVENT 1 |
40 |
#define MOUSE_EVENT 2 |
41 |
#define WINDOW_BUFFER_SIZE_EVENT 4 |
42 |
#define MENU_EVENT 8 |
43 |
#define FOCUS_EVENT 16 |
44 |
#define CAPSLOCK_ON 128 |
45 |
#define ENHANCED_KEY 256 |
46 |
#define RIGHT_ALT_PRESSED 1 |
47 |
#define LEFT_ALT_PRESSED 2 |
48 |
#define RIGHT_CTRL_PRESSED 4 |
49 |
#define LEFT_CTRL_PRESSED 8 |
50 |
#define SHIFT_PRESSED 16 |
51 |
#define NUMLOCK_ON 32 |
52 |
#define SCROLLLOCK_ON 64 |
53 |
#define FROM_LEFT_1ST_BUTTON_PRESSED 1 |
54 |
#define RIGHTMOST_BUTTON_PRESSED 2 |
55 |
#define FROM_LEFT_2ND_BUTTON_PRESSED 4 |
56 |
#define FROM_LEFT_3RD_BUTTON_PRESSED 8 |
57 |
#define FROM_LEFT_4TH_BUTTON_PRESSED 16 |
58 |
#define MOUSE_MOVED 1 |
59 |
#define DOUBLE_CLICK 2 |
60 |
#define MOUSE_WHEELED 4 |
61 |
|
62 |
typedef struct _CHAR_INFO { |
63 |
union { |
64 |
WCHAR UnicodeChar; |
65 |
CHAR AsciiChar; |
66 |
} Char; |
67 |
WORD Attributes; |
68 |
} CHAR_INFO, *PCHAR_INFO; |
69 |
typedef struct _SMALL_RECT { |
70 |
SHORT Left; |
71 |
SHORT Top; |
72 |
SHORT Right; |
73 |
SHORT Bottom; |
74 |
} SMALL_RECT, *PSMALL_RECT; |
75 |
typedef struct _CONSOLE_CURSOR_INFO { |
76 |
DWORD dwSize; |
77 |
BOOL bVisible; |
78 |
} CONSOLE_CURSOR_INFO,*PCONSOLE_CURSOR_INFO; |
79 |
typedef struct _COORD { |
80 |
SHORT X; |
81 |
SHORT Y; |
82 |
} COORD, *PCOORD; |
83 |
typedef struct _CONSOLE_FONT_INFO { |
84 |
DWORD nFont; |
85 |
COORD dwFontSize; |
86 |
} CONSOLE_FONT_INFO, *PCONSOLE_FONT_INFO; |
87 |
typedef struct _CONSOLE_SCREEN_BUFFER_INFO { |
88 |
COORD dwSize; |
89 |
COORD dwCursorPosition; |
90 |
WORD wAttributes; |
91 |
SMALL_RECT srWindow; |
92 |
COORD dwMaximumWindowSize; |
93 |
} CONSOLE_SCREEN_BUFFER_INFO,*PCONSOLE_SCREEN_BUFFER_INFO; |
94 |
typedef BOOL(CALLBACK *PHANDLER_ROUTINE)(DWORD); |
95 |
typedef struct _KEY_EVENT_RECORD { |
96 |
BOOL bKeyDown; |
97 |
WORD wRepeatCount; |
98 |
WORD wVirtualKeyCode; |
99 |
WORD wVirtualScanCode; |
100 |
union { |
101 |
WCHAR UnicodeChar; |
102 |
CHAR AsciiChar; |
103 |
} uChar; |
104 |
DWORD dwControlKeyState; |
105 |
} |
106 |
#ifdef __GNUC__ |
107 |
/* gcc's alignment is not what win32 expects */ |
108 |
__attribute__((packed)) |
109 |
#endif |
110 |
KEY_EVENT_RECORD; |
111 |
|
112 |
typedef struct _MOUSE_EVENT_RECORD { |
113 |
COORD dwMousePosition; |
114 |
DWORD dwButtonState; |
115 |
DWORD dwControlKeyState; |
116 |
DWORD dwEventFlags; |
117 |
} MOUSE_EVENT_RECORD; |
118 |
typedef struct _WINDOW_BUFFER_SIZE_RECORD { COORD dwSize; } WINDOW_BUFFER_SIZE_RECORD; |
119 |
typedef struct _MENU_EVENT_RECORD { UINT dwCommandId; } MENU_EVENT_RECORD,*PMENU_EVENT_RECORD; |
120 |
typedef struct _FOCUS_EVENT_RECORD { BOOL bSetFocus; } FOCUS_EVENT_RECORD; |
121 |
typedef struct _INPUT_RECORD { |
122 |
WORD EventType; |
123 |
union { |
124 |
KEY_EVENT_RECORD KeyEvent; |
125 |
MOUSE_EVENT_RECORD MouseEvent; |
126 |
WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent; |
127 |
MENU_EVENT_RECORD MenuEvent; |
128 |
FOCUS_EVENT_RECORD FocusEvent; |
129 |
} Event; |
130 |
} INPUT_RECORD,*PINPUT_RECORD; |
131 |
|
132 |
BOOL WINAPI AllocConsole(void); |
133 |
#if (_WIN32_WINNT >= 0x0501) |
134 |
#define ATTACH_PARENT_PROCESS ((DWORD)-1) |
135 |
BOOL WINAPI AttachConsole(DWORD); |
136 |
#endif |
137 |
HANDLE WINAPI CreateConsoleScreenBuffer(DWORD,DWORD,CONST SECURITY_ATTRIBUTES*,DWORD,LPVOID); |
138 |
BOOL WINAPI FillConsoleOutputAttribute(HANDLE,WORD,DWORD,COORD,PDWORD); |
139 |
BOOL WINAPI FillConsoleOutputCharacterA(HANDLE,CHAR,DWORD,COORD,PDWORD); |
140 |
BOOL WINAPI FillConsoleOutputCharacterW(HANDLE,WCHAR,DWORD,COORD,PDWORD); |
141 |
BOOL WINAPI FlushConsoleInputBuffer(HANDLE); |
142 |
BOOL WINAPI FreeConsole(void); |
143 |
BOOL WINAPI GenerateConsoleCtrlEvent(DWORD,DWORD); |
144 |
UINT WINAPI GetConsoleCP(void); |
145 |
BOOL WINAPI GetConsoleCursorInfo(HANDLE,PCONSOLE_CURSOR_INFO); |
146 |
BOOL WINAPI GetConsoleMode(HANDLE,PDWORD); |
147 |
UINT WINAPI GetConsoleOutputCP(void); |
148 |
BOOL WINAPI GetConsoleScreenBufferInfo(HANDLE,PCONSOLE_SCREEN_BUFFER_INFO); |
149 |
DWORD WINAPI GetConsoleTitleA(LPSTR,DWORD); |
150 |
DWORD WINAPI GetConsoleTitleW(LPWSTR,DWORD); |
151 |
#if (_WIN32_WINNT >= 0x0500) |
152 |
BOOL WINAPI GetConsoleDisplayMode(LPDWORD); |
153 |
HWND WINAPI GetConsoleWindow(void); |
154 |
#endif |
155 |
#if (_WIN32_WINNT >= 0x0501) |
156 |
DWORD WINAPI GetConsoleProcessList(LPDWORD, DWORD); |
157 |
#endif |
158 |
COORD WINAPI GetLargestConsoleWindowSize(HANDLE); |
159 |
BOOL WINAPI GetNumberOfConsoleInputEvents(HANDLE,PDWORD); |
160 |
BOOL WINAPI GetNumberOfConsoleMouseButtons(PDWORD); |
161 |
BOOL WINAPI PeekConsoleInputA(HANDLE,PINPUT_RECORD,DWORD,PDWORD); |
162 |
BOOL WINAPI PeekConsoleInputW(HANDLE,PINPUT_RECORD,DWORD,PDWORD); |
163 |
BOOL WINAPI ReadConsoleA(HANDLE,PVOID,DWORD,PDWORD,PVOID); |
164 |
BOOL WINAPI ReadConsoleW(HANDLE,PVOID,DWORD,PDWORD,PVOID); |
165 |
BOOL WINAPI ReadConsoleInputA(HANDLE,PINPUT_RECORD,DWORD,PDWORD); |
166 |
BOOL WINAPI ReadConsoleInputW(HANDLE,PINPUT_RECORD,DWORD,PDWORD); |
167 |
BOOL WINAPI ReadConsoleOutputAttribute(HANDLE,LPWORD,DWORD,COORD,LPDWORD); |
168 |
BOOL WINAPI ReadConsoleOutputCharacterA(HANDLE,LPSTR,DWORD,COORD,PDWORD); |
169 |
BOOL WINAPI ReadConsoleOutputCharacterW(HANDLE,LPWSTR,DWORD,COORD,PDWORD); |
170 |
BOOL WINAPI ReadConsoleOutputA(HANDLE,PCHAR_INFO,COORD,COORD,PSMALL_RECT); |
171 |
BOOL WINAPI ReadConsoleOutputW(HANDLE,PCHAR_INFO,COORD,COORD,PSMALL_RECT); |
172 |
BOOL WINAPI ScrollConsoleScreenBufferA(HANDLE,const SMALL_RECT*,const SMALL_RECT*,COORD,const CHAR_INFO*); |
173 |
BOOL WINAPI ScrollConsoleScreenBufferW(HANDLE,const SMALL_RECT*,const SMALL_RECT*,COORD,const CHAR_INFO*); |
174 |
BOOL WINAPI SetConsoleActiveScreenBuffer(HANDLE); |
175 |
BOOL WINAPI SetConsoleCP(UINT); |
176 |
BOOL WINAPI SetConsoleCtrlHandler(PHANDLER_ROUTINE,BOOL); |
177 |
BOOL WINAPI SetConsoleCursorInfo(HANDLE,const CONSOLE_CURSOR_INFO*); |
178 |
BOOL WINAPI SetConsoleCursorPosition(HANDLE,COORD); |
179 |
#if (_WIN32_WINNT >= 0x0501) |
180 |
BOOL WINAPI SetConsoleDisplayMode(HANDLE,DWORD,PCOORD); |
181 |
#endif |
182 |
BOOL WINAPI SetConsoleMode(HANDLE,DWORD); |
183 |
BOOL WINAPI SetConsoleOutputCP(UINT); |
184 |
BOOL WINAPI SetConsoleScreenBufferSize(HANDLE,COORD); |
185 |
BOOL WINAPI SetConsoleTextAttribute(HANDLE,WORD); |
186 |
BOOL WINAPI SetConsoleTitleA(LPCSTR); |
187 |
BOOL WINAPI SetConsoleTitleW(LPCWSTR); |
188 |
BOOL WINAPI SetConsoleWindowInfo(HANDLE,BOOL,const SMALL_RECT*); |
189 |
BOOL WINAPI WriteConsoleA(HANDLE,PCVOID,DWORD,PDWORD,PVOID); |
190 |
BOOL WINAPI WriteConsoleW(HANDLE,PCVOID,DWORD,PDWORD,PVOID); |
191 |
BOOL WINAPI WriteConsoleInputA(HANDLE,const INPUT_RECORD*,DWORD,PDWORD); |
192 |
BOOL WINAPI WriteConsoleInputW(HANDLE,const INPUT_RECORD*,DWORD,PDWORD); |
193 |
BOOL WINAPI WriteConsoleOutputA(HANDLE,const CHAR_INFO*,COORD,COORD,PSMALL_RECT); |
194 |
BOOL WINAPI WriteConsoleOutputW(HANDLE,const CHAR_INFO*,COORD,COORD,PSMALL_RECT); |
195 |
BOOL WINAPI WriteConsoleOutputAttribute(HANDLE,const WORD*,DWORD,COORD,PDWORD); |
196 |
BOOL WINAPI WriteConsoleOutputCharacterA(HANDLE,LPCSTR,DWORD,COORD,PDWORD); |
197 |
BOOL WINAPI WriteConsoleOutputCharacterW(HANDLE,LPCWSTR,DWORD,COORD,PDWORD); |
198 |
|
199 |
#ifdef UNICODE |
200 |
#define FillConsoleOutputCharacter FillConsoleOutputCharacterW |
201 |
#define GetConsoleTitle GetConsoleTitleW |
202 |
#define PeekConsoleInput PeekConsoleInputW |
203 |
#define ReadConsole ReadConsoleW |
204 |
#define ReadConsoleInput ReadConsoleInputW |
205 |
#define ReadConsoleOutput ReadConsoleOutputW |
206 |
#define ReadConsoleOutputCharacter ReadConsoleOutputCharacterW |
207 |
#define ScrollConsoleScreenBuffer ScrollConsoleScreenBufferW |
208 |
#define SetConsoleTitle SetConsoleTitleW |
209 |
#define WriteConsole WriteConsoleW |
210 |
#define WriteConsoleInput WriteConsoleInputW |
211 |
#define WriteConsoleOutput WriteConsoleOutputW |
212 |
#define WriteConsoleOutputCharacter WriteConsoleOutputCharacterW |
213 |
#else |
214 |
#define FillConsoleOutputCharacter FillConsoleOutputCharacterA |
215 |
#define GetConsoleTitle GetConsoleTitleA |
216 |
#define PeekConsoleInput PeekConsoleInputA |
217 |
#define ReadConsole ReadConsoleA |
218 |
#define ReadConsoleInput ReadConsoleInputA |
219 |
#define ReadConsoleOutput ReadConsoleOutputA |
220 |
#define ReadConsoleOutputCharacter ReadConsoleOutputCharacterA |
221 |
#define ScrollConsoleScreenBuffer ScrollConsoleScreenBufferA |
222 |
#define SetConsoleTitle SetConsoleTitleA |
223 |
#define WriteConsole WriteConsoleA |
224 |
#define WriteConsoleInput WriteConsoleInputA |
225 |
#define WriteConsoleOutput WriteConsoleOutputA |
226 |
#define WriteConsoleOutputCharacter WriteConsoleOutputCharacterA |
227 |
#endif |
228 |
|
229 |
#ifdef __cplusplus |
230 |
} |
231 |
#endif |
232 |
#endif |