|
|
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:
1.1.1.2 ! root 7: wincon.x
1.1 root 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:
1.1.1.2 ! root 91: typedef struct _MENU_EVENT_RECORD {
! 92: UINT dwCommandId;
! 93: } MENU_EVENT_RECORD, *PMENU_EVENT_RECORD;
! 94:
! 95: typedef struct _FOCUS_EVENT_RECORD {
! 96: BOOL bSetFocus;
! 97: } FOCUS_EVENT_RECORD, *PFOCUS_EVENT_RECORD;
! 98:
1.1 root 99: typedef struct _INPUT_RECORD {
100: WORD EventType;
101: union {
102: KEY_EVENT_RECORD KeyEvent;
103: MOUSE_EVENT_RECORD MouseEvent;
104: WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
1.1.1.2 ! root 105: MENU_EVENT_RECORD MenuEvent;
! 106: FOCUS_EVENT_RECORD FocusEvent;
1.1 root 107: } Event;
108: } INPUT_RECORD, *PINPUT_RECORD;
109:
110: //
111: // EventType flags:
112: //
113:
114: #define KEY_EVENT 0x0001 // Event contains key event record
115: #define MOUSE_EVENT 0x0002 // Event contains mouse event record
116: #define WINDOW_BUFFER_SIZE_EVENT 0x0004 // Event contains window change event record
1.1.1.2 ! root 117: #define MENU_EVENT 0x0008 // Event contains menu event record
! 118: #define FOCUS_EVENT 0x0010 // event contains focus change
1.1 root 119:
120: typedef struct _CHAR_INFO {
121: union {
122: WCHAR UnicodeChar;
123: CHAR AsciiChar;
124: } Char;
125: WORD Attributes;
126: } CHAR_INFO, *PCHAR_INFO;
127:
128: //
129: // Attributes flags:
130: //
131:
132: #define FOREGROUND_BLUE 0x0001 // text color contains blue.
133: #define FOREGROUND_GREEN 0x0002 // text color contains green.
134: #define FOREGROUND_RED 0x0004 // text color contains red.
135: #define FOREGROUND_INTENSITY 0x0008 // text color is intensified.
136: #define BACKGROUND_BLUE 0x0010 // background color contains blue.
137: #define BACKGROUND_GREEN 0x0020 // background color contains green.
138: #define BACKGROUND_RED 0x0040 // background color contains red.
139: #define BACKGROUND_INTENSITY 0x0080 // background color is intensified.
140:
141:
142: typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
143: COORD dwSize;
144: COORD dwCursorPosition;
145: WORD wAttributes;
146: SMALL_RECT srWindow;
147: COORD dwMaximumWindowSize;
148: } CONSOLE_SCREEN_BUFFER_INFO, *PCONSOLE_SCREEN_BUFFER_INFO;
149:
150: typedef struct _CONSOLE_CURSOR_INFO {
151: DWORD dwSize;
152: BOOL bVisible;
153: } CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO;
154:
155: //
156: // typedef for ctrl-c handler routines
157: //
158:
159: typedef
160: BOOL
161: (*PHANDLER_ROUTINE)(
1.1.1.2 ! root 162: DWORD CtrlType
1.1 root 163: );
164:
165: #define CTRL_C_EVENT 0
166: #define CTRL_BREAK_EVENT 1
1.1.1.2 ! root 167: #define CTRL_CLOSE_EVENT 2
1.1 root 168:
169: //
170: // Input Mode flags:
171: //
172:
173: #define ENABLE_PROCESSED_INPUT 0x0001
174: #define ENABLE_LINE_INPUT 0x0002
175: #define ENABLE_ECHO_INPUT 0x0004
176: #define ENABLE_WINDOW_INPUT 0x0008
177: #define ENABLE_MOUSE_INPUT 0x0010
178:
179: //
180: // Output Mode flags:
181: //
182:
183: #define ENABLE_PROCESSED_OUTPUT 0x0001
184: #define ENABLE_WRAP_AT_EOL_OUTPUT 0x0002
185:
186: //
187: // direct API definitions.
188: //
189:
190: BOOL
191: APIENTRY
1.1.1.2 ! root 192: PeekConsoleInputA(
! 193: HANDLE hConsoleInput,
! 194: PINPUT_RECORD lpBuffer,
! 195: DWORD nLength,
! 196: LPDWORD lpNumberOfEventsRead
! 197: );
! 198: BOOL
! 199: APIENTRY
! 200: PeekConsoleInputW(
1.1 root 201: HANDLE hConsoleInput,
202: PINPUT_RECORD lpBuffer,
203: DWORD nLength,
204: LPDWORD lpNumberOfEventsRead
205: );
1.1.1.2 ! root 206: #ifdef UNICODE
! 207: #define PeekConsoleInput PeekConsoleInputW
! 208: #else
! 209: #define PeekConsoleInput PeekConsoleInputA
! 210: #endif // !UNICODE
1.1 root 211:
212: BOOL
213: APIENTRY
1.1.1.2 ! root 214: ReadConsoleInputA(
1.1 root 215: HANDLE hConsoleInput,
216: PINPUT_RECORD lpBuffer,
217: DWORD nLength,
218: LPDWORD lpNumberOfEventsRead
219: );
1.1.1.2 ! root 220: BOOL
! 221: APIENTRY
! 222: ReadConsoleInputW(
! 223: HANDLE hConsoleInput,
! 224: PINPUT_RECORD lpBuffer,
! 225: DWORD nLength,
! 226: LPDWORD lpNumberOfEventsRead
! 227: );
! 228: #ifdef UNICODE
! 229: #define ReadConsoleInput ReadConsoleInputW
! 230: #else
! 231: #define ReadConsoleInput ReadConsoleInputA
! 232: #endif // !UNICODE
1.1 root 233:
234: BOOL
235: APIENTRY
1.1.1.2 ! root 236: WriteConsoleInputA(
1.1 root 237: HANDLE hConsoleInput,
238: PINPUT_RECORD lpBuffer,
239: DWORD nLength,
240: LPDWORD lpNumberOfEventsWritten
241: );
1.1.1.2 ! root 242: BOOL
! 243: APIENTRY
! 244: WriteConsoleInputW(
! 245: HANDLE hConsoleInput,
! 246: PINPUT_RECORD lpBuffer,
! 247: DWORD nLength,
! 248: LPDWORD lpNumberOfEventsWritten
! 249: );
! 250: #ifdef UNICODE
! 251: #define WriteConsoleInput WriteConsoleInputW
! 252: #else
! 253: #define WriteConsoleInput WriteConsoleInputA
! 254: #endif // !UNICODE
1.1 root 255:
256: BOOL
257: APIENTRY
1.1.1.2 ! root 258: ReadConsoleOutputA(
1.1 root 259: HANDLE hConsoleOutput,
260: PCHAR_INFO lpBuffer,
261: COORD dwBufferSize,
262: COORD dwBufferCoord,
263: PSMALL_RECT lpReadRegion
264: );
1.1.1.2 ! root 265: BOOL
! 266: APIENTRY
! 267: ReadConsoleOutputW(
! 268: HANDLE hConsoleOutput,
! 269: PCHAR_INFO lpBuffer,
! 270: COORD dwBufferSize,
! 271: COORD dwBufferCoord,
! 272: PSMALL_RECT lpReadRegion
! 273: );
! 274: #ifdef UNICODE
! 275: #define ReadConsoleOutput ReadConsoleOutputW
! 276: #else
! 277: #define ReadConsoleOutput ReadConsoleOutputA
! 278: #endif // !UNICODE
1.1 root 279:
280: BOOL
281: APIENTRY
1.1.1.2 ! root 282: WriteConsoleOutputA(
! 283: HANDLE hConsoleOutput,
! 284: PCHAR_INFO lpBuffer,
! 285: COORD dwBufferSize,
! 286: COORD dwBufferCoord,
! 287: PSMALL_RECT lpWriteRegion
! 288: );
! 289: BOOL
! 290: APIENTRY
! 291: WriteConsoleOutputW(
1.1 root 292: HANDLE hConsoleOutput,
293: PCHAR_INFO lpBuffer,
294: COORD dwBufferSize,
295: COORD dwBufferCoord,
296: PSMALL_RECT lpWriteRegion
297: );
1.1.1.2 ! root 298: #ifdef UNICODE
! 299: #define WriteConsoleOutput WriteConsoleOutputW
! 300: #else
! 301: #define WriteConsoleOutput WriteConsoleOutputA
! 302: #endif // !UNICODE
1.1 root 303:
304: BOOL
305: APIENTRY
1.1.1.2 ! root 306: ReadConsoleOutputCharacterA(
1.1 root 307: HANDLE hConsoleOutput,
308: LPSTR lpCharacter,
309: DWORD nLength,
310: COORD dwReadCoord,
311: LPDWORD lpNumberOfCharsRead
312: );
1.1.1.2 ! root 313: BOOL
! 314: APIENTRY
! 315: ReadConsoleOutputCharacterW(
! 316: HANDLE hConsoleOutput,
! 317: LPWSTR lpCharacter,
! 318: DWORD nLength,
! 319: COORD dwReadCoord,
! 320: LPDWORD lpNumberOfCharsRead
! 321: );
! 322: #ifdef UNICODE
! 323: #define ReadConsoleOutputCharacter ReadConsoleOutputCharacterW
! 324: #else
! 325: #define ReadConsoleOutputCharacter ReadConsoleOutputCharacterA
! 326: #endif // !UNICODE
1.1 root 327:
328: BOOL
329: APIENTRY
330: ReadConsoleOutputAttribute(
331: HANDLE hConsoleOutput,
332: LPWORD lpAttribute,
333: DWORD nLength,
334: COORD dwReadCoord,
335: LPDWORD lpNumberOfAttrsRead
336: );
337:
338: BOOL
339: APIENTRY
1.1.1.2 ! root 340: WriteConsoleOutputCharacterA(
1.1 root 341: HANDLE hConsoleOutput,
342: LPSTR lpCharacter,
343: DWORD nLength,
344: COORD dwWriteCoord,
345: LPDWORD lpNumberOfCharsWritten
346: );
1.1.1.2 ! root 347: BOOL
! 348: APIENTRY
! 349: WriteConsoleOutputCharacterW(
! 350: HANDLE hConsoleOutput,
! 351: LPWSTR lpCharacter,
! 352: DWORD nLength,
! 353: COORD dwWriteCoord,
! 354: LPDWORD lpNumberOfCharsWritten
! 355: );
! 356: #ifdef UNICODE
! 357: #define WriteConsoleOutputCharacter WriteConsoleOutputCharacterW
! 358: #else
! 359: #define WriteConsoleOutputCharacter WriteConsoleOutputCharacterA
! 360: #endif // !UNICODE
1.1 root 361:
362: BOOL
363: APIENTRY
364: WriteConsoleOutputAttribute(
365: HANDLE hConsoleOutput,
366: LPWORD lpAttribute,
367: DWORD nLength,
368: COORD dwWriteCoord,
369: LPDWORD lpNumberOfAttrsWritten
370: );
371:
372: BOOL
373: APIENTRY
1.1.1.2 ! root 374: FillConsoleOutputCharacterA(
! 375: HANDLE hConsoleOutput,
! 376: CHAR cCharacter,
! 377: DWORD nLength,
! 378: COORD dwWriteCoord,
! 379: LPDWORD lpNumberOfCharsWritten
! 380: );
! 381: BOOL
! 382: APIENTRY
! 383: FillConsoleOutputCharacterW(
1.1 root 384: HANDLE hConsoleOutput,
1.1.1.2 ! root 385: WCHAR cCharacter,
1.1 root 386: DWORD nLength,
387: COORD dwWriteCoord,
388: LPDWORD lpNumberOfCharsWritten
389: );
1.1.1.2 ! root 390: #ifdef UNICODE
! 391: #define FillConsoleOutputCharacter FillConsoleOutputCharacterW
! 392: #else
! 393: #define FillConsoleOutputCharacter FillConsoleOutputCharacterA
! 394: #endif // !UNICODE
1.1 root 395:
396: BOOL
397: APIENTRY
398: FillConsoleOutputAttribute(
399: HANDLE hConsoleOutput,
400: WORD wAttribute,
401: DWORD nLength,
402: COORD dwWriteCoord,
403: LPDWORD lpNumberOfAttrsWritten
404: );
405:
406: BOOL
407: APIENTRY
408: GetConsoleMode(
409: HANDLE hConsoleHandle,
410: LPDWORD lpMode
411: );
412:
413: BOOL
414: APIENTRY
415: GetNumberOfConsoleInputEvents(
416: HANDLE hConsoleInput,
417: LPDWORD lpNumberOfEvents
418: );
419:
420: BOOL
421: APIENTRY
422: GetConsoleScreenBufferInfo(
423: HANDLE hConsoleOutput,
424: PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo
425: );
426:
427: COORD
428: APIENTRY
429: GetLargestConsoleWindowSize(
430: HANDLE hConsoleOutput
431: );
432:
433: BOOL
434: APIENTRY
435: GetConsoleCursorInfo(
436: HANDLE hConsoleOutput,
437: PCONSOLE_CURSOR_INFO lpConsoleCursorInfo
438: );
439:
440: BOOL
441: APIENTRY
442: GetNumberOfConsoleMouseButtons(
443: LPDWORD lpNumberOfMouseButtons
444: );
445:
446: BOOL
447: APIENTRY
448: SetConsoleMode(
449: HANDLE hConsoleHandle,
450: DWORD dwMode
451: );
452:
453: BOOL
454: APIENTRY
455: SetConsoleActiveScreenBuffer(
456: HANDLE hConsoleOutput
457: );
458:
459: BOOL
460: APIENTRY
461: FlushConsoleInputBuffer(
462: HANDLE hConsoleInput
463: );
464:
465: BOOL
466: APIENTRY
467: SetConsoleScreenBufferSize(
468: HANDLE hConsoleOutput,
469: COORD dwSize
470: );
471:
472: BOOL
473: APIENTRY
474: SetConsoleCursorPosition(
475: HANDLE hConsoleOutput,
476: COORD dwCursorPosition
477: );
478:
479: BOOL
480: APIENTRY
481: SetConsoleCursorInfo(
482: HANDLE hConsoleOutput,
483: PCONSOLE_CURSOR_INFO lpConsoleCursorInfo
484: );
485:
486: BOOL
487: APIENTRY
1.1.1.2 ! root 488: ScrollConsoleScreenBufferA(
! 489: HANDLE hConsoleOutput,
! 490: PSMALL_RECT lpScrollRectangle,
! 491: PSMALL_RECT lpClipRectangle,
! 492: COORD dwDestinationOrigin,
! 493: PCHAR_INFO lpFill
! 494: );
! 495: BOOL
! 496: APIENTRY
! 497: ScrollConsoleScreenBufferW(
1.1 root 498: HANDLE hConsoleOutput,
499: PSMALL_RECT lpScrollRectangle,
500: PSMALL_RECT lpClipRectangle,
501: COORD dwDestinationOrigin,
502: PCHAR_INFO lpFill
503: );
1.1.1.2 ! root 504: #ifdef UNICODE
! 505: #define ScrollConsoleScreenBuffer ScrollConsoleScreenBufferW
! 506: #else
! 507: #define ScrollConsoleScreenBuffer ScrollConsoleScreenBufferA
! 508: #endif // !UNICODE
1.1 root 509:
510: BOOL
511: APIENTRY
512: SetConsoleWindowInfo(
513: HANDLE hConsoleOutput,
514: BOOL bAbsolute,
515: PSMALL_RECT lpConsoleWindow
516: );
517:
518: BOOL
519: APIENTRY
520: SetConsoleTextAttribute(
521: HANDLE hConsoleOutput,
522: WORD wAttributes
523: );
524:
525: BOOL
526: APIENTRY
527: SetConsoleCtrlHandler(
1.1.1.2 ! root 528: PHANDLER_ROUTINE HandlerRoutine,
! 529: BOOL Add
1.1 root 530: );
1.1.1.2 ! root 531:
1.1 root 532: BOOL
533: APIENTRY
534: AllocConsole( VOID );
535:
536: BOOL
537: APIENTRY
538: FreeConsole( VOID );
539:
540:
541: DWORD
542: APIENTRY
1.1.1.2 ! root 543: GetConsoleTitleA(
1.1 root 544: LPSTR lpConsoleTitle,
545: DWORD nSize
546: );
1.1.1.2 ! root 547: DWORD
! 548: APIENTRY
! 549: GetConsoleTitleW(
! 550: LPWSTR lpConsoleTitle,
! 551: DWORD nSize
! 552: );
! 553: #ifdef UNICODE
! 554: #define GetConsoleTitle GetConsoleTitleW
! 555: #else
! 556: #define GetConsoleTitle GetConsoleTitleA
! 557: #endif // !UNICODE
1.1 root 558:
559: BOOL
560: APIENTRY
1.1.1.2 ! root 561: SetConsoleTitleA(
1.1 root 562: LPSTR lpConsoleTitle
563: );
1.1.1.2 ! root 564: BOOL
! 565: APIENTRY
! 566: SetConsoleTitleW(
! 567: LPWSTR lpConsoleTitle
! 568: );
! 569: #ifdef UNICODE
! 570: #define SetConsoleTitle SetConsoleTitleW
! 571: #else
! 572: #define SetConsoleTitle SetConsoleTitleA
! 573: #endif // !UNICODE
! 574:
! 575: BOOL
! 576: ReadConsoleA(
! 577: HANDLE hConsoleInput,
! 578: LPVOID lpBuffer,
! 579: DWORD nNumberOfCharsToRead,
! 580: LPDWORD lpNumberOfCharsRead,
! 581: LPVOID lpReserved
! 582: );
! 583: BOOL
! 584: ReadConsoleW(
! 585: HANDLE hConsoleInput,
! 586: LPVOID lpBuffer,
! 587: DWORD nNumberOfCharsToRead,
! 588: LPDWORD lpNumberOfCharsRead,
! 589: LPVOID lpReserved
! 590: );
! 591: #ifdef UNICODE
! 592: #define ReadConsole ReadConsoleW
! 593: #else
! 594: #define ReadConsole ReadConsoleA
! 595: #endif // !UNICODE
! 596:
! 597: BOOL
! 598: WriteConsoleA(
! 599: HANDLE hConsoleOutput,
! 600: CONST VOID *lpBuffer,
! 601: DWORD nNumberOfCharsToWrite,
! 602: LPDWORD lpNumberOfCharsWritten,
! 603: LPVOID lpReserved
! 604: );
! 605: BOOL
! 606: WriteConsoleW(
! 607: HANDLE hConsoleOutput,
! 608: CONST VOID *lpBuffer,
! 609: DWORD nNumberOfCharsToWrite,
! 610: LPDWORD lpNumberOfCharsWritten,
! 611: LPVOID lpReserved
! 612: );
! 613: #ifdef UNICODE
! 614: #define WriteConsole WriteConsoleW
! 615: #else
! 616: #define WriteConsole WriteConsoleA
! 617: #endif // !UNICODE
1.1 root 618:
619: #define CONSOLE_TEXTMODE_BUFFER 1
620:
621: HANDLE
622: APIENTRY
623: CreateConsoleScreenBuffer(
624: DWORD dwDesiredAccess,
625: DWORD dwShareMode,
626: LPSECURITY_ATTRIBUTES lpSecurityAttributes,
1.1.1.2 ! root 627: DWORD dwFlags,
! 628: PVOID lpScreenBufferData
! 629: );
! 630:
! 631: UINT
! 632: GetConsoleCP( VOID );
! 633:
! 634: BOOL
! 635: SetConsoleCP(
! 636: UINT wCodePageID
! 637: );
! 638:
! 639: UINT
! 640: GetConsoleOutputCP( VOID );
! 641:
! 642: BOOL
! 643: SetConsoleOutputCP(
! 644: UINT wCodePageID
1.1 root 645: );
646:
647: #endif // _WINCON_
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.