[PSDK]
[reactos.git] / reactos / include / psdk / wincon.h
1 #ifndef _WINCON_H
2 #define _WINCON_H
3
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7
8 #if (_WIN32_WINNT >= 0x0600) && !defined(NOGDI)
9 # include "wingdi.h"
10 #endif
11
12 #ifdef _MSC_VER
13 #pragma warning(push)
14 #pragma warning(disable:4820)
15 #endif
16
17 /*
18 * Special PID for parent process for AttachConsole API
19 */
20 #if (_WIN32_WINNT >= 0x0501)
21 #define ATTACH_PARENT_PROCESS ((DWORD)-1)
22 #endif
23
24 /*
25 * Console display modes
26 */
27 // These codes are answered by GetConsoleDisplayMode
28 #define CONSOLE_WINDOWED 0
29 #define CONSOLE_FULLSCREEN 1
30 #if (_WIN32_WINNT >= 0x0600)
31 #define CONSOLE_OVERSTRIKE 1
32 #endif
33 #define CONSOLE_FULLSCREEN_HARDWARE 2
34
35 // These codes should be given to SetConsoleDisplayMode
36 #define CONSOLE_FULLSCREEN_MODE 1
37 #define CONSOLE_WINDOWED_MODE 2
38
39 /*
40 * Color attributes for text and screen background
41 */
42 #define FOREGROUND_BLUE 0x0001
43 #define FOREGROUND_GREEN 0x0002
44 #define FOREGROUND_RED 0x0004
45 #define FOREGROUND_INTENSITY 0x0008
46 #define BACKGROUND_BLUE 0x0010
47 #define BACKGROUND_GREEN 0x0020
48 #define BACKGROUND_RED 0x0040
49 #define BACKGROUND_INTENSITY 0x0080
50
51 #define COMMON_LVB_LEADING_BYTE 0x0100
52 #define COMMON_LVB_TRAILING_BYTE 0x0200
53 #define COMMON_LVB_GRID_HORIZONTAL 0x0400
54 #define COMMON_LVB_GRID_LVERTICAL 0x0800
55 #define COMMON_LVB_GRID_RVERTICAL 0x1000
56 #define COMMON_LVB_REVERSE_VIDEO 0x4000
57 #define COMMON_LVB_UNDERSCORE 0x8000
58
59 /*
60 * Screen buffer types
61 */
62 #define CONSOLE_TEXTMODE_BUFFER 1
63 #define CONSOLE_GRAPHICS_BUFFER 2 /* Undocumented, see http://blog.airesoft.co.uk/2012/10/things-ms-can-do-that-they-dont-tell-you-about-console-graphics/ */
64
65 /*
66 * Control handler codes
67 */
68 #define CTRL_C_EVENT 0
69 #define CTRL_BREAK_EVENT 1
70 #define CTRL_CLOSE_EVENT 2
71 #define CTRL_LOGOFF_EVENT 5
72 #define CTRL_SHUTDOWN_EVENT 6
73
74 /*
75 * Input mode flags
76 */
77 #define ENABLE_PROCESSED_INPUT 0x0001
78 #define ENABLE_LINE_INPUT 0x0002
79 #define ENABLE_ECHO_INPUT 0x0004
80 #define ENABLE_WINDOW_INPUT 0x0008
81 #define ENABLE_MOUSE_INPUT 0x0010
82 #define ENABLE_INSERT_MODE 0x0020
83 #define ENABLE_QUICK_EDIT_MODE 0x0040
84 #define ENABLE_EXTENDED_FLAGS 0x0080
85 #if (_WIN32_WINNT >= 0x0600)
86 #define ENABLE_AUTO_POSITION 0x0100
87 #endif
88
89 /*
90 * Output mode flags
91 */
92 #define ENABLE_PROCESSED_OUTPUT 0x0001
93 #define ENABLE_WRAP_AT_EOL_OUTPUT 0x0002
94
95 /*
96 * Console selection flags
97 */
98 #define CONSOLE_NO_SELECTION 0x0000
99 #define CONSOLE_SELECTION_IN_PROGRESS 0x0001
100 #define CONSOLE_SELECTION_NOT_EMPTY 0x0002
101 #define CONSOLE_MOUSE_SELECTION 0x0004
102 #define CONSOLE_MOUSE_DOWN 0x0008
103
104 /*
105 * History duplicate flags
106 */
107 #if (_WIN32_WINNT >= 0x0600)
108 #define HISTORY_NO_DUP_FLAG 0x0001
109 #endif
110
111 /*
112 * Event types
113 */
114 #define KEY_EVENT 0x0001
115 #define MOUSE_EVENT 0x0002
116 #define WINDOW_BUFFER_SIZE_EVENT 0x0004
117 #define MENU_EVENT 0x0008
118 #define FOCUS_EVENT 0x0010
119
120 /*
121 * ControlKeyState flags
122 */
123 #define RIGHT_ALT_PRESSED 0x0001
124 #define LEFT_ALT_PRESSED 0x0002
125 #define RIGHT_CTRL_PRESSED 0x0004
126 #define LEFT_CTRL_PRESSED 0x0008
127 #define SHIFT_PRESSED 0x0010
128 #define NUMLOCK_ON 0x0020
129 #define SCROLLLOCK_ON 0x0040
130 #define CAPSLOCK_ON 0x0080
131 #define ENHANCED_KEY 0x0100
132
133 /*
134 * ButtonState flags
135 */
136 #define FROM_LEFT_1ST_BUTTON_PRESSED 0x0001
137 #define RIGHTMOST_BUTTON_PRESSED 0x0002
138 #define FROM_LEFT_2ND_BUTTON_PRESSED 0x0004
139 #define FROM_LEFT_3RD_BUTTON_PRESSED 0x0008
140 #define FROM_LEFT_4TH_BUTTON_PRESSED 0x0010
141
142 /*
143 * Mouse event flags
144 */
145 #define MOUSE_MOVED 0x0001
146 #define DOUBLE_CLICK 0x0002
147 #define MOUSE_WHEELED 0x0004
148 #if (_WIN32_WINNT >= 0x0600)
149 #define MOUSE_HWHEELED 0x0008
150 #endif
151
152 typedef struct _CONSOLE_READCONSOLE_CONTROL {
153 ULONG nLength;
154 ULONG nInitialChars;
155 ULONG dwCtrlWakeupMask;
156 ULONG dwControlKeyState;
157 } CONSOLE_READCONSOLE_CONTROL, *PCONSOLE_READCONSOLE_CONTROL;
158
159 typedef struct _CHAR_INFO {
160 union {
161 WCHAR UnicodeChar;
162 CHAR AsciiChar;
163 } Char;
164 WORD Attributes;
165 } CHAR_INFO,*PCHAR_INFO;
166
167 typedef struct _SMALL_RECT {
168 SHORT Left;
169 SHORT Top;
170 SHORT Right;
171 SHORT Bottom;
172 } SMALL_RECT,*PSMALL_RECT;
173
174 typedef struct _CONSOLE_CURSOR_INFO {
175 DWORD dwSize;
176 BOOL bVisible;
177 } CONSOLE_CURSOR_INFO,*PCONSOLE_CURSOR_INFO;
178
179 typedef struct _COORD {
180 SHORT X;
181 SHORT Y;
182 } COORD, *PCOORD;
183
184 typedef struct _CONSOLE_SELECTION_INFO {
185 DWORD dwFlags;
186 COORD dwSelectionAnchor;
187 SMALL_RECT srSelection;
188 } CONSOLE_SELECTION_INFO, *PCONSOLE_SELECTION_INFO;
189
190 typedef struct _CONSOLE_FONT_INFO {
191 DWORD nFont;
192 COORD dwFontSize;
193 } CONSOLE_FONT_INFO, *PCONSOLE_FONT_INFO;
194
195 typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
196 COORD dwSize;
197 COORD dwCursorPosition;
198 WORD wAttributes;
199 SMALL_RECT srWindow;
200 COORD dwMaximumWindowSize;
201 } CONSOLE_SCREEN_BUFFER_INFO,*PCONSOLE_SCREEN_BUFFER_INFO;
202
203 /* Undocumented, see http://blog.airesoft.co.uk/2012/10/things-ms-can-do-that-they-dont-tell-you-about-console-graphics/ */
204 #if defined(_WINGDI_) && !defined(NOGDI)
205 typedef struct _CONSOLE_GRAPHICS_BUFFER_INFO {
206 DWORD dwBitMapInfoLength;
207 LPBITMAPINFO lpBitMapInfo;
208 DWORD dwUsage; // DIB_PAL_COLORS or DIB_RGB_COLORS
209 HANDLE hMutex;
210 PVOID lpBitMap;
211 } CONSOLE_GRAPHICS_BUFFER_INFO, *PCONSOLE_GRAPHICS_BUFFER_INFO;
212 #endif
213
214 typedef BOOL(CALLBACK *PHANDLER_ROUTINE)(_In_ DWORD);
215
216 typedef struct _KEY_EVENT_RECORD {
217 BOOL bKeyDown;
218 WORD wRepeatCount;
219 WORD wVirtualKeyCode;
220 WORD wVirtualScanCode;
221 union {
222 WCHAR UnicodeChar;
223 CHAR AsciiChar;
224 } uChar;
225 DWORD dwControlKeyState;
226 }
227 #ifdef __GNUC__
228 /* gcc's alignment is not what win32 expects */
229 PACKED
230 #endif
231 KEY_EVENT_RECORD;
232
233 typedef struct _MOUSE_EVENT_RECORD {
234 COORD dwMousePosition;
235 DWORD dwButtonState;
236 DWORD dwControlKeyState;
237 DWORD dwEventFlags;
238 } MOUSE_EVENT_RECORD;
239
240 typedef struct _WINDOW_BUFFER_SIZE_RECORD { COORD dwSize; } WINDOW_BUFFER_SIZE_RECORD;
241 typedef struct _MENU_EVENT_RECORD { UINT dwCommandId; } MENU_EVENT_RECORD,*PMENU_EVENT_RECORD;
242 typedef struct _FOCUS_EVENT_RECORD { BOOL bSetFocus; } FOCUS_EVENT_RECORD;
243
244 typedef struct _INPUT_RECORD {
245 WORD EventType;
246 union {
247 KEY_EVENT_RECORD KeyEvent;
248 MOUSE_EVENT_RECORD MouseEvent;
249 WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
250 MENU_EVENT_RECORD MenuEvent;
251 FOCUS_EVENT_RECORD FocusEvent;
252 } Event;
253 } INPUT_RECORD,*PINPUT_RECORD;
254
255 #if (_WIN32_WINNT >= 0x0600)
256 typedef struct _CONSOLE_HISTORY_INFO {
257 UINT cbSize;
258 UINT HistoryBufferSize;
259 UINT NumberOfHistoryBuffers;
260 DWORD dwFlags;
261 } CONSOLE_HISTORY_INFO, *PCONSOLE_HISTORY_INFO;
262
263 typedef struct _CONSOLE_SCREEN_BUFFER_INFOEX {
264 ULONG cbSize;
265 COORD dwSize;
266 COORD dwCursorPosition;
267 WORD wAttributes;
268 SMALL_RECT srWindow;
269 COORD dwMaximumWindowSize;
270 WORD wPopupAttributes;
271 COLORREF ColorTable[16];
272 } CONSOLE_SCREEN_BUFFER_INFOEX, *PCONSOLE_SCREEN_BUFFER_INFOEX;
273
274 #ifndef NOGDI
275 typedef struct _CONSOLE_FONT_INFOEX {
276 ULONG cbSize;
277 DWORD nFont;
278 COORD dwFontSize;
279 UINT FontFamily;
280 UINT FontWeight;
281 WCHAR FaceName[LF_FACESIZE];
282 } CONSOLE_FONT_INFOEX, *PCONSOLE_FONT_INFOEX;
283 #endif
284 #endif
285
286 BOOL WINAPI AllocConsole(VOID);
287
288 #if (_WIN32_WINNT >= 0x0501)
289 BOOL WINAPI AttachConsole(_In_ DWORD);
290
291 BOOL WINAPI AddConsoleAliasA(_In_ LPCSTR, _In_ LPCSTR, _In_ LPCSTR);
292 BOOL WINAPI AddConsoleAliasW(_In_ LPCWSTR, _In_ LPCWSTR, _In_ LPCWSTR);
293
294 DWORD
295 WINAPI
296 GetConsoleAliasA(
297 _In_ LPSTR Source,
298 _Out_writes_(TargetBufferLength) LPSTR TargetBuffer,
299 _In_ DWORD TargetBufferLength,
300 _In_ LPSTR ExeName);
301
302 DWORD
303 WINAPI
304 GetConsoleAliasW(
305 _In_ LPWSTR Source,
306 _Out_writes_(TargetBufferLength) LPWSTR TargetBuffer,
307 _In_ DWORD TargetBufferLength,
308 _In_ LPWSTR ExeName);
309
310 DWORD
311 WINAPI
312 GetConsoleAliasesA(
313 _Out_writes_(AliasBufferLength) LPSTR AliasBuffer,
314 _In_ DWORD AliasBufferLength,
315 _In_ LPSTR ExeName);
316
317 DWORD
318 WINAPI
319 GetConsoleAliasesW(
320 _Out_writes_(AliasBufferLength) LPWSTR AliasBuffer,
321 _In_ DWORD AliasBufferLength,
322 _In_ LPWSTR ExeName);
323
324 DWORD WINAPI GetConsoleAliasesLengthA(_In_ LPSTR ExeName);
325 DWORD WINAPI GetConsoleAliasesLengthW(_In_ LPWSTR ExeName);
326
327 DWORD
328 WINAPI
329 GetConsoleAliasExesA(
330 _Out_writes_(ExeNameBufferLength) LPSTR ExeNameBuffer,
331 _In_ DWORD ExeNameBufferLength);
332
333 DWORD
334 WINAPI
335 GetConsoleAliasExesW(
336 _Out_writes_(ExeNameBufferLength) LPWSTR ExeNameBuffer,
337 _In_ DWORD ExeNameBufferLength);
338
339 DWORD WINAPI GetConsoleAliasExesLengthA(VOID);
340 DWORD WINAPI GetConsoleAliasExesLengthW(VOID);
341 #endif
342
343 HANDLE
344 WINAPI
345 CreateConsoleScreenBuffer(
346 _In_ DWORD,
347 _In_ DWORD,
348 _In_opt_ CONST SECURITY_ATTRIBUTES*,
349 _In_ DWORD,
350 _Reserved_ LPVOID);
351
352 BOOL
353 WINAPI
354 FillConsoleOutputAttribute(
355 _In_ HANDLE,
356 _In_ WORD,
357 _In_ DWORD,
358 _In_ COORD,
359 _Out_ PDWORD);
360
361 BOOL
362 WINAPI
363 FillConsoleOutputCharacterA(
364 _In_ HANDLE,
365 _In_ CHAR,
366 _In_ DWORD,
367 _In_ COORD,
368 _Out_ PDWORD);
369
370 BOOL
371 WINAPI
372 FillConsoleOutputCharacterW(
373 _In_ HANDLE,
374 _In_ WCHAR,
375 _In_ DWORD,
376 _In_ COORD,
377 _Out_ PDWORD);
378
379 BOOL WINAPI FlushConsoleInputBuffer(_In_ HANDLE);
380 BOOL WINAPI FreeConsole(VOID);
381 BOOL WINAPI GenerateConsoleCtrlEvent(_In_ DWORD, _In_ DWORD);
382 UINT WINAPI GetConsoleCP(VOID);
383 BOOL WINAPI GetConsoleCursorInfo(_In_ HANDLE, _Out_ PCONSOLE_CURSOR_INFO);
384 BOOL WINAPI GetConsoleMode(_In_ HANDLE, _Out_ PDWORD);
385 UINT WINAPI GetConsoleOutputCP(VOID);
386
387 BOOL
388 WINAPI
389 GetConsoleScreenBufferInfo(
390 _In_ HANDLE,
391 _Out_ PCONSOLE_SCREEN_BUFFER_INFO);
392
393 /* Undocumented, see http://blog.airesoft.co.uk/2012/10/things-ms-can-do-that-they-dont-tell-you-about-console-graphics/ */
394 BOOL WINAPI InvalidateConsoleDIBits(_In_ HANDLE, _In_ PSMALL_RECT);
395
396 DWORD
397 WINAPI
398 GetConsoleTitleA(
399 _Out_writes_(nSize) LPSTR lpConsoleTitle,
400 _In_ DWORD nSize);
401
402 DWORD
403 WINAPI
404 GetConsoleTitleW(
405 _Out_writes_(nSize) LPWSTR lpConsoleTitle,
406 _In_ DWORD nSize);
407
408 COORD
409 WINAPI
410 GetConsoleFontSize(
411 _In_ HANDLE hConsoleOutput,
412 _In_ DWORD nFont);
413
414 BOOL
415 WINAPI
416 GetCurrentConsoleFont(
417 _In_ HANDLE hConsoleOutput,
418 _In_ BOOL bMaximumWindow,
419 _Out_ PCONSOLE_FONT_INFO lpConsoleCurrentFont);
420
421 #if (_WIN32_WINNT >= 0x0500)
422
423 HWND WINAPI GetConsoleWindow(VOID);
424 BOOL APIENTRY GetConsoleDisplayMode(_Out_ LPDWORD lpModeFlags);
425
426 BOOL
427 APIENTRY
428 SetConsoleDisplayMode(
429 _In_ HANDLE hConsoleOutput,
430 _In_ DWORD dwFlags,
431 _Out_opt_ PCOORD lpNewScreenBufferDimensions);
432
433 #endif
434
435 COORD WINAPI GetLargestConsoleWindowSize(_In_ HANDLE);
436 BOOL WINAPI GetNumberOfConsoleInputEvents(_In_ HANDLE, _Out_ PDWORD);
437 BOOL WINAPI GetNumberOfConsoleMouseButtons(_Out_ PDWORD);
438
439 BOOL
440 WINAPI PeekConsoleInputA(
441 _In_ HANDLE hConsoleInput,
442 _Out_writes_(nLength) PINPUT_RECORD lpBuffer,
443 _In_ DWORD nLength,
444 _Out_ LPDWORD lpNumberOfEventsRead);
445
446 BOOL
447 WINAPI
448 PeekConsoleInputW(
449 _In_ HANDLE hConsoleInput,
450 _Out_writes_(nLength) PINPUT_RECORD lpBuffer,
451 _In_ DWORD nLength,
452 _Out_ LPDWORD lpNumberOfEventsRead);
453
454 _Success_(return != 0)
455 BOOL
456 WINAPI
457 ReadConsoleA(
458 _In_ HANDLE hConsoleInput,
459 _Out_writes_bytes_to_(nNumberOfCharsToRead * sizeof(CHAR), *lpNumberOfCharsRead * sizeof(CHAR)) LPVOID lpBuffer,
460 _In_ DWORD nNumberOfCharsToRead,
461 _Out_ _Deref_out_range_(<= , nNumberOfCharsToRead) LPDWORD lpNumberOfCharsRead,
462 _In_opt_ PCONSOLE_READCONSOLE_CONTROL pInputControl);
463
464 _Success_(return != 0)
465 BOOL
466 WINAPI
467 ReadConsoleW(
468 _In_ HANDLE hConsoleInput,
469 _Out_writes_bytes_to_(nNumberOfCharsToRead * sizeof(WCHAR), *lpNumberOfCharsRead * sizeof(WCHAR)) LPVOID lpBuffer,
470 _In_ DWORD nNumberOfCharsToRead,
471 _Out_ _Deref_out_range_(<= , nNumberOfCharsToRead) LPDWORD lpNumberOfCharsRead,
472 _In_opt_ PCONSOLE_READCONSOLE_CONTROL pInputControl);
473
474 _Success_(return != 0)
475 BOOL
476 WINAPI
477 ReadConsoleInputA(
478 _In_ HANDLE hConsoleInput,
479 _Out_writes_to_(nLength, *lpNumberOfEventsRead) PINPUT_RECORD lpBuffer,
480 _In_ DWORD nLength,
481 _Out_ _Deref_out_range_(<= , nLength) LPDWORD lpNumberOfEventsRead);
482
483 _Success_(return != 0)
484 BOOL
485 WINAPI
486 ReadConsoleInputW(
487 _In_ HANDLE hConsoleInput,
488 _Out_writes_to_(nLength, *lpNumberOfEventsRead) PINPUT_RECORD lpBuffer,
489 _In_ DWORD nLength,
490 _Out_ _Deref_out_range_(<= , nLength) LPDWORD lpNumberOfEventsRead);
491
492 BOOL
493 WINAPI
494 ReadConsoleOutputAttribute(
495 _In_ HANDLE hConsoleOutput,
496 _Out_writes_(nLength) LPWORD lpAttribute,
497 _In_ DWORD nLength,
498 _In_ COORD dwReadCoord,
499 _Out_ LPDWORD lpNumberOfAttrsRead);
500
501 BOOL
502 WINAPI
503 ReadConsoleOutputCharacterA(
504 _In_ HANDLE hConsoleOutput,
505 _Out_writes_(nLength) LPSTR lpCharacter,
506 _In_ DWORD nLength,
507 _In_ COORD dwReadCoord,
508 _Out_ LPDWORD lpNumberOfCharsRead);
509
510 BOOL
511 WINAPI
512 ReadConsoleOutputCharacterW(
513 _In_ HANDLE hConsoleOutput,
514 _Out_writes_(nLength) LPWSTR lpCharacter,
515 _In_ DWORD nLength,
516 _In_ COORD dwReadCoord,
517 _Out_ LPDWORD lpNumberOfCharsRead);
518
519 BOOL
520 WINAPI
521 ReadConsoleOutputA(
522 _In_ HANDLE hConsoleOutput,
523 _Out_writes_(dwBufferSize.X * dwBufferSize.Y) PCHAR_INFO lpBuffer,
524 _In_ COORD dwBufferSize,
525 _In_ COORD dwBufferCoord,
526 _Inout_ PSMALL_RECT lpReadRegion);
527
528 BOOL
529 WINAPI
530 ReadConsoleOutputW(
531 _In_ HANDLE hConsoleOutput,
532 _Out_writes_(dwBufferSize.X * dwBufferSize.Y) PCHAR_INFO lpBuffer,
533 _In_ COORD dwBufferSize,
534 _In_ COORD dwBufferCoord,
535 _Inout_ PSMALL_RECT lpReadRegion);
536
537 BOOL
538 WINAPI
539 ScrollConsoleScreenBufferA(
540 _In_ HANDLE,
541 _In_ const SMALL_RECT*,
542 _In_opt_ const SMALL_RECT*,
543 _In_ COORD,
544 _In_ const CHAR_INFO*);
545
546 BOOL
547 WINAPI
548 ScrollConsoleScreenBufferW(
549 _In_ HANDLE,
550 _In_ const SMALL_RECT*,
551 _In_opt_ const SMALL_RECT*,
552 _In_ COORD,
553 _In_ const CHAR_INFO*);
554
555 BOOL WINAPI SetConsoleActiveScreenBuffer(_In_ HANDLE);
556 BOOL WINAPI SetConsoleCP(_In_ UINT);
557 BOOL WINAPI SetConsoleCtrlHandler(_In_opt_ PHANDLER_ROUTINE, _In_ BOOL);
558 BOOL WINAPI SetConsoleCursorInfo(_In_ HANDLE, _In_ const CONSOLE_CURSOR_INFO*);
559 BOOL WINAPI SetConsoleCursorPosition(_In_ HANDLE, _In_ COORD);
560 BOOL WINAPI SetConsoleMode(_In_ HANDLE, _In_ DWORD);
561 BOOL WINAPI SetConsoleOutputCP(_In_ UINT);
562 BOOL WINAPI SetConsoleScreenBufferSize(_In_ HANDLE, _In_ COORD);
563 BOOL WINAPI SetConsoleTextAttribute(_In_ HANDLE, _In_ WORD);
564 BOOL WINAPI SetConsoleTitleA(_In_ LPCSTR);
565 BOOL WINAPI SetConsoleTitleW(_In_ LPCWSTR);
566
567 BOOL
568 WINAPI
569 SetConsoleWindowInfo(
570 _In_ HANDLE,
571 _In_ BOOL,
572 _In_ const SMALL_RECT*);
573
574 /* Undocumented, see http://undoc.airesoft.co.uk/kernel32.dll/ConsoleMenuControl.php */
575 HMENU WINAPI ConsoleMenuControl(_In_ HANDLE, _In_ DWORD, _In_ DWORD);
576 /* Undocumented */
577 BOOL WINAPI SetConsoleMenuClose(_In_ BOOL);
578 /* Undocumented, see http://undoc.airesoft.co.uk/kernel32.dll/SetConsoleCursor.php */
579 BOOL WINAPI SetConsoleCursor(_In_ HANDLE, _In_ HCURSOR);
580 /* Undocumented, see http://undoc.airesoft.co.uk/kernel32.dll/ShowConsoleCursor.php */
581 INT WINAPI ShowConsoleCursor(_In_ HANDLE, _In_ BOOL);
582 /* Undocumented, see http://comments.gmane.org/gmane.comp.lang.harbour.devel/27844 */
583 BOOL WINAPI SetConsolePalette(_In_ HANDLE, _In_ HPALETTE, _In_ UINT);
584
585 BOOL
586 WINAPI
587 WriteConsoleA(
588 _In_ HANDLE hConsoleOutput,
589 _In_reads_(nNumberOfCharsToWrite) CONST VOID *lpBuffer,
590 _In_ DWORD nNumberOfCharsToWrite,
591 _Out_opt_ LPDWORD lpNumberOfCharsWritten,
592 _Reserved_ LPVOID lpReserved);
593
594 BOOL
595 WINAPI
596 WriteConsoleW(
597 _In_ HANDLE hConsoleOutput,
598 _In_reads_(nNumberOfCharsToWrite) CONST VOID *lpBuffer,
599 _In_ DWORD nNumberOfCharsToWrite,
600 _Out_opt_ LPDWORD lpNumberOfCharsWritten,
601 _Reserved_ LPVOID lpReserved);
602
603 BOOL
604 WINAPI
605 WriteConsoleInputA(
606 _In_ HANDLE hConsoleInput,
607 _In_reads_(nLength) CONST INPUT_RECORD *lpBuffer,
608 _In_ DWORD nLength,
609 _Out_ LPDWORD lpNumberOfEventsWritten);
610
611 BOOL
612 WINAPI
613 WriteConsoleInputW(
614 _In_ HANDLE hConsoleInput,
615 _In_reads_(nLength) CONST INPUT_RECORD *lpBuffer,
616 _In_ DWORD nLength,
617 _Out_ LPDWORD lpNumberOfEventsWritten);
618
619 BOOL
620 WINAPI
621 WriteConsoleOutputA(
622 _In_ HANDLE hConsoleOutput,
623 _In_reads_(dwBufferSize.X * dwBufferSize.Y) CONST CHAR_INFO *lpBuffer,
624 _In_ COORD dwBufferSize,
625 _In_ COORD dwBufferCoord,
626 _Inout_ PSMALL_RECT lpWriteRegion);
627
628 BOOL
629 WINAPI
630 WriteConsoleOutputW(
631 _In_ HANDLE hConsoleOutput,
632 _In_reads_(dwBufferSize.X * dwBufferSize.Y) CONST CHAR_INFO *lpBuffer,
633 _In_ COORD dwBufferSize,
634 _In_ COORD dwBufferCoord,
635 _Inout_ PSMALL_RECT lpWriteRegion);
636
637 BOOL
638 WINAPI
639 WriteConsoleOutputAttribute(
640 _In_ HANDLE hConsoleOutput,
641 _In_reads_(nLength) CONST WORD *lpAttribute,
642 _In_ DWORD nLength,
643 _In_ COORD dwWriteCoord,
644 _Out_ LPDWORD lpNumberOfAttrsWritten);
645
646 BOOL
647 WINAPI
648 WriteConsoleOutputCharacterA(
649 _In_ HANDLE hConsoleOutput,
650 _In_reads_(nLength) LPCSTR lpCharacter,
651 _In_ DWORD nLength,
652 _In_ COORD dwWriteCoord,
653 _Out_ LPDWORD lpNumberOfCharsWritten);
654
655 BOOL
656 WINAPI
657 WriteConsoleOutputCharacterW(
658 _In_ HANDLE hConsoleOutput,
659 _In_reads_(nLength) LPCWSTR lpCharacter,
660 _In_ DWORD nLength,
661 _In_ COORD dwWriteCoord,
662 _Out_ LPDWORD lpNumberOfCharsWritten);
663
664
665 #ifdef UNICODE
666 #define AddConsoleAlias AddConsoleAliasW
667 #define GetConsoleAlias GetConsoleAliasW
668 #define GetConsoleAliases GetConsoleAliasesW
669 #define GetConsoleAliasesLength GetConsoleAliasesLengthW
670 #define GetConsoleAliasExes GetConsoleAliasExesW
671 #define GetConsoleAliasExesLength GetConsoleAliasExesLengthW
672 #define GetConsoleTitle GetConsoleTitleW
673 #define PeekConsoleInput PeekConsoleInputW
674 #define ReadConsole ReadConsoleW
675 #define ReadConsoleInput ReadConsoleInputW
676 #define ReadConsoleOutput ReadConsoleOutputW
677 #define ReadConsoleOutputCharacter ReadConsoleOutputCharacterW
678 #define ScrollConsoleScreenBuffer ScrollConsoleScreenBufferW
679 #define SetConsoleTitle SetConsoleTitleW
680 #define WriteConsole WriteConsoleW
681 #define WriteConsoleInput WriteConsoleInputW
682 #define WriteConsoleOutput WriteConsoleOutputW
683 #define FillConsoleOutputCharacter FillConsoleOutputCharacterW
684 #define WriteConsoleOutputCharacter WriteConsoleOutputCharacterW
685 #else
686 #define AddConsoleAlias AddConsoleAliasA
687 #define GetConsoleAlias GetConsoleAliasA
688 #define GetConsoleAliases GetConsoleAliasesA
689 #define GetConsoleAliasesLength GetConsoleAliasesLengthA
690 #define GetConsoleAliasExes GetConsoleAliasExesA
691 #define GetConsoleAliasExesLength GetConsoleAliasExesLengthA
692 #define GetConsoleTitle GetConsoleTitleA
693 #define PeekConsoleInput PeekConsoleInputA
694 #define ReadConsole ReadConsoleA
695 #define ReadConsoleInput ReadConsoleInputA
696 #define ReadConsoleOutput ReadConsoleOutputA
697 #define ReadConsoleOutputCharacter ReadConsoleOutputCharacterA
698 #define ScrollConsoleScreenBuffer ScrollConsoleScreenBufferA
699 #define SetConsoleTitle SetConsoleTitleA
700 #define WriteConsole WriteConsoleA
701 #define WriteConsoleInput WriteConsoleInputA
702 #define WriteConsoleOutput WriteConsoleOutputA
703 #define FillConsoleOutputCharacter FillConsoleOutputCharacterA
704 #define WriteConsoleOutputCharacter WriteConsoleOutputCharacterA
705 #endif
706
707 #ifdef _MSC_VER
708 #pragma warning(pop)
709 #endif
710
711 #ifdef __cplusplus
712 }
713 #endif
714
715 #endif /* _WINCON_H */