|
|
1.1 root 1: /*++ BUILD Version: 0002 // Increment this if a change has global effects
2:
3: Copyright (c) 1989 Microsoft Corporation
4:
5: Module Name:
6:
7: console.h
8:
9: Abstract:
10:
11: This module contains the public data structures, data types,
12: and procedures exported by the NT console subsystem.
13:
14: Created:
15:
16: 26-Oct-1990
17:
18: Revision History:
19:
20: --*/
21:
22: #ifndef _WINCON_
23: #define _WINCON_
24:
25: typedef struct _COORD {
26: SHORT X;
27: SHORT Y;
28: } COORD, *PCOORD;
29:
30: typedef struct _SMALL_RECT {
31: SHORT Left;
32: SHORT Top;
33: SHORT Right;
34: SHORT Bottom;
35: } SMALL_RECT, *PSMALL_RECT;
36:
37: typedef struct _KEY_EVENT_RECORD {
38: BOOL bKeyDown;
39: WORD wRepeatCount;
40: WORD wVirtualKeyCode;
41: WORD wVirtualScanCode;
42: union {
43: WCHAR UnicodeChar;
44: CHAR AsciiChar;
45: } uChar;
46: DWORD dwControlKeyState;
47: } KEY_EVENT_RECORD, *PKEY_EVENT_RECORD;
48:
49: //
50: // ControlKeyState flags
51: //
52:
53: #define RIGHT_ALT_PRESSED 0x0001 // the right alt key is pressed.
54: #define LEFT_ALT_PRESSED 0x0002 // the left alt key is pressed.
55: #define RIGHT_CTRL_PRESSED 0x0004 // the right ctrl key is pressed.
56: #define LEFT_CTRL_PRESSED 0x0008 // the left ctrl key is pressed.
57: #define SHIFT_PRESSED 0x0010 // the shift key is pressed.
58: #define NUMLOCK_ON 0x0020 // the numlock light is on.
59: #define SCROLLLOCK_ON 0x0040 // the scrolllock light is on.
60: #define CAPSLOCK_ON 0x0080 // the capslock light is on.
61: #define ENHANCED_KEY 0x0100 // the key is enhanced.
62:
63: typedef struct _MOUSE_EVENT_RECORD {
64: COORD dwMousePosition;
65: DWORD dwButtonState;
66: DWORD dwControlKeyState;
67: DWORD dwEventFlags;
68: } MOUSE_EVENT_RECORD, *PMOUSE_EVENT_RECORD;
69:
70: //
71: // ButtonState flags
72: //
73:
74: #define FROM_LEFT_1ST_BUTTON_PRESSED 0x0001
75: #define RIGHTMOST_BUTTON_PRESSED 0x0002
76: #define FROM_LEFT_2ND_BUTTON_PRESSED 0x0004
77: #define FROM_LEFT_3RD_BUTTON_PRESSED 0x0008
78: #define FROM_LEFT_4TH_BUTTON_PRESSED 0x0010
79:
80: //
81: // EventFlags
82: //
83:
84: #define MOUSE_MOVED 0x0001
85: #define DOUBLE_CLICK 0x0002
86:
87: typedef struct _WINDOW_BUFFER_SIZE_RECORD {
88: COORD dwSize;
89: } WINDOW_BUFFER_SIZE_RECORD, *PWINDOW_BUFFER_SIZE_RECORD;
90:
91: typedef struct _INPUT_RECORD {
92: WORD EventType;
93: union {
94: KEY_EVENT_RECORD KeyEvent;
95: MOUSE_EVENT_RECORD MouseEvent;
96: WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
97: } Event;
98: } INPUT_RECORD, *PINPUT_RECORD;
99:
100: //
101: // EventType flags:
102: //
103:
104: #define KEY_EVENT 0x0001 // Event contains key event record
105: #define MOUSE_EVENT 0x0002 // Event contains mouse event record
106: #define WINDOW_BUFFER_SIZE_EVENT 0x0004 // Event contains window change event record
107:
108: typedef struct _CHAR_INFO {
109: union {
110: WCHAR UnicodeChar;
111: CHAR AsciiChar;
112: } Char;
113: WORD Attributes;
114: } CHAR_INFO, *PCHAR_INFO;
115:
116: //
117: // Attributes flags:
118: //
119:
120: #define FOREGROUND_BLUE 0x0001 // text color contains blue.
121: #define FOREGROUND_GREEN 0x0002 // text color contains green.
122: #define FOREGROUND_RED 0x0004 // text color contains red.
123: #define FOREGROUND_INTENSITY 0x0008 // text color is intensified.
124: #define BACKGROUND_BLUE 0x0010 // background color contains blue.
125: #define BACKGROUND_GREEN 0x0020 // background color contains green.
126: #define BACKGROUND_RED 0x0040 // background color contains red.
127: #define BACKGROUND_INTENSITY 0x0080 // background color is intensified.
128:
129:
130: typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
131: COORD dwSize;
132: COORD dwCursorPosition;
133: WORD wAttributes;
134: SMALL_RECT srWindow;
135: COORD dwMaximumWindowSize;
136: } CONSOLE_SCREEN_BUFFER_INFO, *PCONSOLE_SCREEN_BUFFER_INFO;
137:
138: typedef struct _CONSOLE_CURSOR_INFO {
139: DWORD dwSize;
140: BOOL bVisible;
141: } CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO;
142:
143: //
144: // typedef for ctrl-c handler routines
145: //
146:
147: typedef
148: BOOL
149: (*PHANDLER_ROUTINE)(
150: IN ULONG CtrlType
151: );
152:
153: #define CTRL_C_EVENT 0
154: #define CTRL_BREAK_EVENT 1
155:
156: //
157: // Input Mode flags:
158: //
159:
160: #define ENABLE_PROCESSED_INPUT 0x0001
161: #define ENABLE_LINE_INPUT 0x0002
162: #define ENABLE_ECHO_INPUT 0x0004
163: #define ENABLE_WINDOW_INPUT 0x0008
164: #define ENABLE_MOUSE_INPUT 0x0010
165:
166: //
167: // Output Mode flags:
168: //
169:
170: #define ENABLE_PROCESSED_OUTPUT 0x0001
171: #define ENABLE_WRAP_AT_EOL_OUTPUT 0x0002
172:
173: //
174: // direct API definitions.
175: //
176:
177: BOOL
178: APIENTRY
179: PeekConsoleInput(
180: HANDLE hConsoleInput,
181: PINPUT_RECORD lpBuffer,
182: DWORD nLength,
183: LPDWORD lpNumberOfEventsRead
184: );
185:
186: BOOL
187: APIENTRY
188: ReadConsoleInput(
189: HANDLE hConsoleInput,
190: PINPUT_RECORD lpBuffer,
191: DWORD nLength,
192: LPDWORD lpNumberOfEventsRead
193: );
194:
195: BOOL
196: APIENTRY
197: WriteConsoleInput(
198: HANDLE hConsoleInput,
199: PINPUT_RECORD lpBuffer,
200: DWORD nLength,
201: LPDWORD lpNumberOfEventsWritten
202: );
203:
204: BOOL
205: APIENTRY
206: ReadConsoleOutput(
207: HANDLE hConsoleOutput,
208: PCHAR_INFO lpBuffer,
209: COORD dwBufferSize,
210: COORD dwBufferCoord,
211: PSMALL_RECT lpReadRegion
212: );
213:
214: BOOL
215: APIENTRY
216: WriteConsoleOutput(
217: HANDLE hConsoleOutput,
218: PCHAR_INFO lpBuffer,
219: COORD dwBufferSize,
220: COORD dwBufferCoord,
221: PSMALL_RECT lpWriteRegion
222: );
223:
224: BOOL
225: APIENTRY
226: ReadConsoleOutputCharacter(
227: HANDLE hConsoleOutput,
228: LPSTR lpCharacter,
229: DWORD nLength,
230: COORD dwReadCoord,
231: LPDWORD lpNumberOfCharsRead
232: );
233:
234: BOOL
235: APIENTRY
236: ReadConsoleOutputAttribute(
237: HANDLE hConsoleOutput,
238: LPWORD lpAttribute,
239: DWORD nLength,
240: COORD dwReadCoord,
241: LPDWORD lpNumberOfAttrsRead
242: );
243:
244: BOOL
245: APIENTRY
246: WriteConsoleOutputCharacter(
247: HANDLE hConsoleOutput,
248: LPSTR lpCharacter,
249: DWORD nLength,
250: COORD dwWriteCoord,
251: LPDWORD lpNumberOfCharsWritten
252: );
253:
254: BOOL
255: APIENTRY
256: WriteConsoleOutputAttribute(
257: HANDLE hConsoleOutput,
258: LPWORD lpAttribute,
259: DWORD nLength,
260: COORD dwWriteCoord,
261: LPDWORD lpNumberOfAttrsWritten
262: );
263:
264: BOOL
265: APIENTRY
266: FillConsoleOutputCharacter(
267: HANDLE hConsoleOutput,
268: CHAR cCharacter,
269: DWORD nLength,
270: COORD dwWriteCoord,
271: LPDWORD lpNumberOfCharsWritten
272: );
273:
274: BOOL
275: APIENTRY
276: FillConsoleOutputAttribute(
277: HANDLE hConsoleOutput,
278: WORD wAttribute,
279: DWORD nLength,
280: COORD dwWriteCoord,
281: LPDWORD lpNumberOfAttrsWritten
282: );
283:
284: BOOL
285: APIENTRY
286: GetConsoleMode(
287: HANDLE hConsoleHandle,
288: LPDWORD lpMode
289: );
290:
291: BOOL
292: APIENTRY
293: GetNumberOfConsoleInputEvents(
294: HANDLE hConsoleInput,
295: LPDWORD lpNumberOfEvents
296: );
297:
298: BOOL
299: APIENTRY
300: GetConsoleScreenBufferInfo(
301: HANDLE hConsoleOutput,
302: PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo
303: );
304:
305: COORD
306: APIENTRY
307: GetLargestConsoleWindowSize(
308: HANDLE hConsoleOutput
309: );
310:
311: BOOL
312: APIENTRY
313: GetConsoleCursorInfo(
314: HANDLE hConsoleOutput,
315: PCONSOLE_CURSOR_INFO lpConsoleCursorInfo
316: );
317:
318: BOOL
319: APIENTRY
320: GetNumberOfConsoleMouseButtons(
321: LPDWORD lpNumberOfMouseButtons
322: );
323:
324: BOOL
325: APIENTRY
326: SetConsoleMode(
327: HANDLE hConsoleHandle,
328: DWORD dwMode
329: );
330:
331: BOOL
332: APIENTRY
333: SetConsoleActiveScreenBuffer(
334: HANDLE hConsoleOutput
335: );
336:
337: BOOL
338: APIENTRY
339: FlushConsoleInputBuffer(
340: HANDLE hConsoleInput
341: );
342:
343: BOOL
344: APIENTRY
345: SetConsoleScreenBufferSize(
346: HANDLE hConsoleOutput,
347: COORD dwSize
348: );
349:
350: BOOL
351: APIENTRY
352: SetConsoleCursorPosition(
353: HANDLE hConsoleOutput,
354: COORD dwCursorPosition
355: );
356:
357: BOOL
358: APIENTRY
359: SetConsoleCursorInfo(
360: HANDLE hConsoleOutput,
361: PCONSOLE_CURSOR_INFO lpConsoleCursorInfo
362: );
363:
364: BOOL
365: APIENTRY
366: ScrollConsoleScreenBuffer(
367: HANDLE hConsoleOutput,
368: PSMALL_RECT lpScrollRectangle,
369: PSMALL_RECT lpClipRectangle,
370: COORD dwDestinationOrigin,
371: PCHAR_INFO lpFill
372: );
373:
374: BOOL
375: APIENTRY
376: SetConsoleWindowInfo(
377: HANDLE hConsoleOutput,
378: BOOL bAbsolute,
379: PSMALL_RECT lpConsoleWindow
380: );
381:
382: BOOL
383: APIENTRY
384: SetConsoleTextAttribute(
385: HANDLE hConsoleOutput,
386: WORD wAttributes
387: );
388:
389: BOOL
390: APIENTRY
391: SetConsoleCtrlHandler(
392: IN PHANDLER_ROUTINE HandlerRoutine,
393: IN BOOL Add
394: );
395:
396: BOOL
397: APIENTRY
398: AllocConsole( VOID );
399:
400: BOOL
401: APIENTRY
402: FreeConsole( VOID );
403:
404:
405: DWORD
406: APIENTRY
407: GetConsoleTitle(
408: LPSTR lpConsoleTitle,
409: DWORD nSize
410: );
411:
412: BOOL
413: APIENTRY
414: SetConsoleTitle(
415: LPSTR lpConsoleTitle
416: );
417:
418: #define CONSOLE_TEXTMODE_BUFFER 1
419:
420: HANDLE
421: APIENTRY
422: CreateConsoleScreenBuffer(
423: DWORD dwDesiredAccess,
424: DWORD dwShareMode,
425: LPSECURITY_ATTRIBUTES lpSecurityAttributes,
426: IN DWORD dwFlags,
427: IN PVOID lpScreenBufferData OPTIONAL
428: );
429:
430: #endif // _WINCON_
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.