From 6479346df7674ef45103e37e152cb01671e4c0de Mon Sep 17 00:00:00 2001 From: Keith Marshall Date: Mon, 29 Oct 2018 23:36:08 +0000 Subject: [PATCH] Clean up ; consolidate its version dependencies. --- w32api/ChangeLog | 37 +++ w32api/include/wincon.h | 732 ++++++++++++++++++++++++++---------------------- 2 files changed, 431 insertions(+), 338 deletions(-) diff --git a/w32api/ChangeLog b/w32api/ChangeLog index 470878f..0e3c6c8 100644 --- a/w32api/ChangeLog +++ b/w32api/ChangeLog @@ -1,3 +1,40 @@ +2018-10-29 Keith Marshall + + Clean up ; consolidate its version dependencies. + + * include/wincon.h: Tidy layout; assert copyright. + [_WIN32_WINNT]: Always compare it symbolically, with respect to... + [_WIN32_WINNT_WIN2K, _WIN32_WINNT_WINXP, _WIN32_WINNT_VISTA]: ...each + of these; group and consolidate respective version dependencies. + (FOREGROUND_BLUE, FOREGROUND_GREEN, FOREGROUND_RED) + (FOREGROUND_INTENSITY, BACKGROUND_BLUE, BACKGROUND_GREEN) + (BACKGROUND_RED, BACKGROUND_INTENSITY, COMMON_LVB_LEADING_BYTE) + (COMMON_LVB_TRAILING_BYTE, COMMON_LVB_GRID_HORIZONTAL) + (COMMON_LVB_GRID_LVERTICAL, COMMON_LVB_GRID_RVERTICAL) + (COMMON_LVB_REVERSE_VIDEO, COMMON_LVB_UNDERSCORE, CTRL_C_EVENT) + (CTRL_BREAK_EVENT, CTRL_CLOSE_EVENT, CTRL_LOGOFF_EVENT) + (CTRL_SHUTDOWN_EVENT, ENABLE_LINE_INPUT, ENABLE_ECHO_INPUT) + (ENABLE_PROCESSED_INPUT, ENABLE_WINDOW_INPUT, ENABLE_MOUSE_INPUT) + (ENABLE_INSERT_MODE, ENABLE_QUICK_EDIT_MODE, ENABLE_EXTENDED_FLAGS) + (ENABLE_AUTO_POSITION, ENABLE_VIRTUAL_TERMINAL_INPUT) + (ENABLE_PROCESSED_OUTPUT, ENABLE_WRAP_AT_EOL_OUTPUT) + (ENABLE_VIRTUAL_TERMINAL_PROCESSING, DISABLE_NEWLINE_AUTO_RETURN) + (ENABLE_LVB_GRID_WORLDWIDE, KEY_EVENT, MOUSE_EVENT) + (WINDOW_BUFFER_SIZE_EVENT, MENU_EVENT, FOCUS_EVENT, CAPSLOCK_ON) + (ENHANCED_KEY, RIGHT_ALT_PRESSED, LEFT_ALT_PRESSED) + (RIGHT_CTRL_PRESSED, LEFT_CTRL_PRESSED, SHIFT_PRESSED, NUMLOCK_ON) + (SCROLLLOCK_ON, FROM_LEFT_1ST_BUTTON_PRESSED) + (FROM_LEFT_2ND_BUTTON_PRESSED, FROM_LEFT_3RD_BUTTON_PRESSED) + (FROM_LEFT_4TH_BUTTON_PRESSED, RIGHTMOST_BUTTON_PRESSED, MOUSE_MOVED) + (DOUBLE_CLICK, MOUSE_WHEELED, MOUSE_HWHEELED, CONSOLE_FULLSCREEN) + (CONSOLE_FULLSCREEN_HARDWARE, CONSOLE_FULLSCREEN_MODE) + (CONSOLE_WINDOWED_MODE, CONSOLE_NO_SELECTION) + (CONSOLE_SELECTION_IN_PROGRESS, CONSOLE_SELECTION_NOT_EMPTY) + (CONSOLE_MOUSE_SELECTION, CONSOLE_MOUSE_DOWN, HISTORY_NO_DUP_FLAG): + Redefine, expressing all values in hexadecimal rather than decimal; + this is consistent with Microsoft documentation, and it is also more + logical, since all represent bit-flags, bit-fields, or bit-masks. + 2018-10-24 Keith Marshall Make header effectively self-contained. diff --git a/w32api/include/wincon.h b/w32api/include/wincon.h index 5fbe429..3903aae 100644 --- a/w32api/include/wincon.h +++ b/w32api/include/wincon.h @@ -1,8 +1,40 @@ +/* + * wincon.h + * + * Windows console I/O declarations, and API function prototypes. + * + * $Id$ + * + * Written by Anders Norlander + * Copyright (C) 1998, 1999, 2002-2006, 2009, 2011, 2016, 2018, + * MinGW.org Project. + * + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice, this permission notice, and the following + * disclaimer shall be included in all copies or substantial portions of + * the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER + * DEALINGS IN THE SOFTWARE. + * + */ #ifndef _WINCON_H -#define _WINCON_H #pragma GCC system_header +#define _WINCON_H -#if _WIN32_WINNT < 0x0600 +#if _WIN32_WINNT < _WIN32_WINNT_VISTA /* For effective self-containment, is dependent on the core set * of Windows' custom type definitions; prior to Vista, it suffices to... */ @@ -16,353 +48,377 @@ _BEGIN_C_DECLS -#define FOREGROUND_BLUE 1 -#define FOREGROUND_GREEN 2 -#define FOREGROUND_RED 4 -#define FOREGROUND_INTENSITY 8 -#define BACKGROUND_BLUE 16 -#define BACKGROUND_GREEN 32 -#define BACKGROUND_RED 64 -#define BACKGROUND_INTENSITY 128 -#define COMMON_LVB_LEADING_BYTE 256 -#define COMMON_LVB_TRAILING_BYTE 512 -#define COMMON_LVB_GRID_HORIZONTAL 1024 -#define COMMON_LVB_GRID_LVERTICAL 2048 -#define COMMON_LVB_GRID_RVERTICAL 4096 -#define COMMON_LVB_REVERSE_VIDEO 16384 -#define COMMON_LVB_UNDERSCORE 32768 -#if (_WIN32_WINNT >= 0x0501) -#define CONSOLE_FULLSCREEN_MODE 1 -#define CONSOLE_WINDOWED_MODE 2 -#define CONSOLE_NO_SELECTION 0 -#define CONSOLE_SELECTION_IN_PROGRESS 1 -#define CONSOLE_SELECTION_NOT_EMPTY 2 -#define CONSOLE_MOUSE_SELECTION 4 -#define CONSOLE_MOUSE_DOWN 8 -#endif -#define CTRL_C_EVENT 0 -#define CTRL_BREAK_EVENT 1 -#define CTRL_CLOSE_EVENT 2 -#define CTRL_LOGOFF_EVENT 5 -#define CTRL_SHUTDOWN_EVENT 6 -#define ENABLE_LINE_INPUT 2 -#define ENABLE_ECHO_INPUT 4 -#define ENABLE_PROCESSED_INPUT 1 -#define ENABLE_WINDOW_INPUT 8 -#define ENABLE_MOUSE_INPUT 16 -#define ENABLE_INSERT_MODE 32 -#define ENABLE_QUICK_EDIT_MODE 64 -#define ENABLE_EXTENDED_FLAGS 128 -#define ENABLE_AUTO_POSITION 256 -#define ENABLE_VIRTUAL_TERMINAL_INPUT 512 -#define ENABLE_PROCESSED_OUTPUT 1 -#define ENABLE_WRAP_AT_EOL_OUTPUT 2 -#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 4 -#define DISABLE_NEWLINE_AUTO_RETURN 8 -#define ENABLE_LVB_GRID_WORLDWIDE 16 -#if (_WIN32_WINNT >= 0x0600) -#define HISTORY_NO_DUP_FLAG 1 -#endif -#define KEY_EVENT 1 -#define MOUSE_EVENT 2 -#define WINDOW_BUFFER_SIZE_EVENT 4 -#define MENU_EVENT 8 -#define FOCUS_EVENT 16 -#define CAPSLOCK_ON 128 -#define ENHANCED_KEY 256 -#define RIGHT_ALT_PRESSED 1 -#define LEFT_ALT_PRESSED 2 -#define RIGHT_CTRL_PRESSED 4 -#define LEFT_CTRL_PRESSED 8 -#define SHIFT_PRESSED 16 -#define NUMLOCK_ON 32 -#define SCROLLLOCK_ON 64 -#define FROM_LEFT_1ST_BUTTON_PRESSED 1 -#define RIGHTMOST_BUTTON_PRESSED 2 -#define FROM_LEFT_2ND_BUTTON_PRESSED 4 -#define FROM_LEFT_3RD_BUTTON_PRESSED 8 -#define FROM_LEFT_4TH_BUTTON_PRESSED 16 -#define MOUSE_MOVED 1 -#define DOUBLE_CLICK 2 -#define MOUSE_WHEELED 4 -#define MOUSE_HWHEELED 8 -#if (_WIN32_WINNT >= 0x0500) -#define CONSOLE_FULLSCREEN 1 -#define CONSOLE_FULLSCREEN_HARDWARE 2 -#endif +#define FOREGROUND_BLUE 0x0001 +#define FOREGROUND_GREEN 0x0002 +#define FOREGROUND_RED 0x0004 +#define FOREGROUND_INTENSITY 0x0008 +#define BACKGROUND_BLUE 0x0010 +#define BACKGROUND_GREEN 0x0020 +#define BACKGROUND_RED 0x0040 +#define BACKGROUND_INTENSITY 0x0080 + +#define COMMON_LVB_LEADING_BYTE 0x0100 +#define COMMON_LVB_TRAILING_BYTE 0x0200 +#define COMMON_LVB_GRID_HORIZONTAL 0x0400 +#define COMMON_LVB_GRID_LVERTICAL 0x0800 +#define COMMON_LVB_GRID_RVERTICAL 0x1000 +#define COMMON_LVB_REVERSE_VIDEO 0x4000 +#define COMMON_LVB_UNDERSCORE 0x8000 -typedef struct _CHAR_INFO { - union { - WCHAR UnicodeChar; - CHAR AsciiChar; - } Char; - WORD Attributes; +#define CTRL_C_EVENT 0x0000 +#define CTRL_BREAK_EVENT 0x0001 +#define CTRL_CLOSE_EVENT 0x0002 +#define CTRL_LOGOFF_EVENT 0x0005 +#define CTRL_SHUTDOWN_EVENT 0x0006 + +#define ENABLE_LINE_INPUT 0x0002 +#define ENABLE_ECHO_INPUT 0x0004 +#define ENABLE_PROCESSED_INPUT 0x0001 +#define ENABLE_WINDOW_INPUT 0x0008 +#define ENABLE_MOUSE_INPUT 0x0010 +#define ENABLE_INSERT_MODE 0x0020 +#define ENABLE_QUICK_EDIT_MODE 0x0040 +#define ENABLE_EXTENDED_FLAGS 0x0080 +#define ENABLE_AUTO_POSITION 0x0100 +#define ENABLE_VIRTUAL_TERMINAL_INPUT 0x0200 +#define ENABLE_PROCESSED_OUTPUT 0x0001 +#define ENABLE_WRAP_AT_EOL_OUTPUT 0x0002 +#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004 +#define DISABLE_NEWLINE_AUTO_RETURN 0x0008 +#define ENABLE_LVB_GRID_WORLDWIDE 0x0010 + +#define KEY_EVENT 0x0001 +#define MOUSE_EVENT 0x0002 +#define WINDOW_BUFFER_SIZE_EVENT 0x0004 +#define MENU_EVENT 0x0008 +#define FOCUS_EVENT 0x0010 +#define CAPSLOCK_ON 0x0080 +#define ENHANCED_KEY 0x0100 + +#define RIGHT_ALT_PRESSED 0x0001 +#define LEFT_ALT_PRESSED 0x0002 +#define RIGHT_CTRL_PRESSED 0x0004 +#define LEFT_CTRL_PRESSED 0x0008 +#define SHIFT_PRESSED 0x0010 +#define NUMLOCK_ON 0x0020 +#define SCROLLLOCK_ON 0x0040 + +#define FROM_LEFT_1ST_BUTTON_PRESSED 0x0001 +#define RIGHTMOST_BUTTON_PRESSED 0x0002 +#define FROM_LEFT_2ND_BUTTON_PRESSED 0x0004 +#define FROM_LEFT_3RD_BUTTON_PRESSED 0x0008 +#define FROM_LEFT_4TH_BUTTON_PRESSED 0x0010 +#define MOUSE_MOVED 0x0001 +#define DOUBLE_CLICK 0x0002 +#define MOUSE_WHEELED 0x0004 +#define MOUSE_HWHEELED 0x0008 + +typedef +struct _CHAR_INFO +{ union + { WCHAR UnicodeChar; + CHAR AsciiChar; + } Char; + WORD Attributes; } CHAR_INFO, *PCHAR_INFO; -typedef struct _SMALL_RECT { - SHORT Left; - SHORT Top; - SHORT Right; - SHORT Bottom; + +typedef +struct _SMALL_RECT +{ SHORT Left; + SHORT Top; + SHORT Right; + SHORT Bottom; } SMALL_RECT, *PSMALL_RECT; -typedef struct _CONSOLE_CURSOR_INFO { - DWORD dwSize; - BOOL bVisible; -} CONSOLE_CURSOR_INFO,*PCONSOLE_CURSOR_INFO; -typedef struct _COORD { - SHORT X; - SHORT Y; + +typedef +struct _CONSOLE_CURSOR_INFO +{ DWORD dwSize; + BOOL bVisible; +} CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO; + +typedef +struct _COORD +{ SHORT X; + SHORT Y; } COORD, *PCOORD; -#if (_WIN32_WINNT >= 0x0501) -typedef struct _CONSOLE_FONT_INFO { - DWORD nFont; - COORD dwFontSize; -} CONSOLE_FONT_INFO, *PCONSOLE_FONT_INFO; + +typedef +struct _CONSOLE_SCREEN_BUFFER_INFO +{ COORD dwSize; + COORD dwCursorPosition; + WORD wAttributes; + SMALL_RECT srWindow; + COORD dwMaximumWindowSize; +} CONSOLE_SCREEN_BUFFER_INFO, *PCONSOLE_SCREEN_BUFFER_INFO; + +typedef BOOL (CALLBACK *PHANDLER_ROUTINE)(DWORD); + +typedef +struct _KEY_EVENT_RECORD +#ifdef __GNUC__ /* gcc's alignment is not what Win32 expects here! */ +# define __MINGW_ATTRIBUTE_PACKED__ __attribute__((packed)) +#else +# define __MINGW_ATTRIBUTE_PACKED__ #endif -#if (_WIN32_WINNT >= 0x600) -typedef struct _CONSOLE_FONT_INFOEX { - ULONG cbSize; - DWORD nFont; - COORD dwFontSize; - UINT FontFamily; - UINT FontWeight; - WCHAR FaceName[LF_FACESIZE]; +{ BOOL bKeyDown; + WORD wRepeatCount; + WORD wVirtualKeyCode; + WORD wVirtualScanCode; + union + { WCHAR UnicodeChar; + CHAR AsciiChar; + } uChar; + DWORD dwControlKeyState; +} __MINGW_ATTRIBUTE_PACKED__ KEY_EVENT_RECORD; + +typedef +struct _MOUSE_EVENT_RECORD +{ COORD dwMousePosition; + DWORD dwButtonState; + DWORD dwControlKeyState; + DWORD dwEventFlags; +} MOUSE_EVENT_RECORD; + +typedef +struct _WINDOW_BUFFER_SIZE_RECORD +{ COORD dwSize; +} WINDOW_BUFFER_SIZE_RECORD; + +typedef +struct _MENU_EVENT_RECORD +{ UINT dwCommandId; +} MENU_EVENT_RECORD, *PMENU_EVENT_RECORD; + +typedef +struct _FOCUS_EVENT_RECORD +{ BOOL bSetFocus; +} FOCUS_EVENT_RECORD; + +typedef +struct _INPUT_RECORD +{ WORD EventType; + union + { KEY_EVENT_RECORD KeyEvent; + MOUSE_EVENT_RECORD MouseEvent; + WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent; + MENU_EVENT_RECORD MenuEvent; + FOCUS_EVENT_RECORD FocusEvent; + } Event; +} INPUT_RECORD, *PINPUT_RECORD; + +WINAPI BOOL AllocConsole (void); +WINAPI HANDLE CreateConsoleScreenBuffer (DWORD, DWORD, CONST SECURITY_ATTRIBUTES *, DWORD, LPVOID); +WINAPI BOOL FillConsoleOutputAttribute (HANDLE, WORD, DWORD, COORD, PDWORD); + +#define FillConsoleOutputCharacter __AW_SUFFIXED__(FillConsoleOutputCharacter) +WINAPI BOOL FillConsoleOutputCharacterA (HANDLE, CHAR, DWORD, COORD, PDWORD); +WINAPI BOOL FillConsoleOutputCharacterW (HANDLE, WCHAR, DWORD, COORD, PDWORD); + +WINAPI BOOL FlushConsoleInputBuffer (HANDLE); +WINAPI BOOL FreeConsole (void); +WINAPI BOOL GenerateConsoleCtrlEvent (DWORD, DWORD); + +#define GetConsoleAlias __AW_SUFFIXED__(GetConsoleAlias) +WINAPI DWORD GetConsoleAliasA (LPSTR, LPSTR, DWORD, LPSTR); +WINAPI DWORD GetConsoleAliasW (LPWSTR, LPWSTR, DWORD, LPWSTR); + +WINAPI UINT GetConsoleCP (void); +WINAPI BOOL GetConsoleCursorInfo (HANDLE, PCONSOLE_CURSOR_INFO); +WINAPI BOOL GetConsoleMode (HANDLE, PDWORD); +WINAPI UINT GetConsoleOutputCP (void); +WINAPI BOOL GetConsoleScreenBufferInfo (HANDLE, PCONSOLE_SCREEN_BUFFER_INFO); + +#define GetConsoleTitle __AW_SUFFIXED__(GetConsoleTitle) +WINAPI DWORD GetConsoleTitleA (LPSTR, DWORD); +WINAPI DWORD GetConsoleTitleW (LPWSTR, DWORD); + +WINAPI COORD GetLargestConsoleWindowSize (HANDLE); +WINAPI BOOL GetNumberOfConsoleInputEvents (HANDLE, PDWORD); +WINAPI BOOL GetNumberOfConsoleMouseButtons (PDWORD); +WINAPI BOOL HandlerRoutine (DWORD); + +#define PeekConsoleInput __AW_SUFFIXED__(PeekConsoleInput) +WINAPI BOOL PeekConsoleInputA (HANDLE, PINPUT_RECORD, DWORD, PDWORD); +WINAPI BOOL PeekConsoleInputW (HANDLE, PINPUT_RECORD, DWORD, PDWORD); + +#define ReadConsole __AW_SUFFIXED__(ReadConsole) +WINAPI BOOL ReadConsoleA (HANDLE, PVOID, DWORD, PDWORD, PVOID); +WINAPI BOOL ReadConsoleW (HANDLE, PVOID, DWORD, PDWORD, PVOID); + +#define ReadConsoleInput __AW_SUFFIXED__(ReadConsoleInput) +WINAPI BOOL ReadConsoleInputA (HANDLE, PINPUT_RECORD, DWORD, PDWORD); +WINAPI BOOL ReadConsoleInputW (HANDLE, PINPUT_RECORD, DWORD, PDWORD); + +WINAPI BOOL ReadConsoleOutputAttribute (HANDLE, LPWORD, DWORD, COORD, LPDWORD); + +#define ReadConsoleOutputCharacter __AW_SUFFIXED__(ReadConsoleOutputCharacter) +WINAPI BOOL ReadConsoleOutputCharacterA (HANDLE, LPSTR, DWORD, COORD, PDWORD); +WINAPI BOOL ReadConsoleOutputCharacterW (HANDLE, LPWSTR, DWORD, COORD, PDWORD); + +#define ReadConsoleOutput __AW_SUFFIXED__(ReadConsoleOutput) +WINAPI BOOL ReadConsoleOutputA (HANDLE, PCHAR_INFO, COORD, COORD, PSMALL_RECT); +WINAPI BOOL ReadConsoleOutputW (HANDLE, PCHAR_INFO, COORD, COORD, PSMALL_RECT); + +#define ScrollConsoleScreenBuffer __AW_SUFFIXED__(ScrollConsoleScreenBuffer) +WINAPI BOOL ScrollConsoleScreenBufferA +(HANDLE, const SMALL_RECT *, const SMALL_RECT *, COORD, const CHAR_INFO *); +WINAPI BOOL ScrollConsoleScreenBufferW +(HANDLE, const SMALL_RECT *, const SMALL_RECT *, COORD, const CHAR_INFO *); + +WINAPI BOOL SetConsoleActiveScreenBuffer (HANDLE); +WINAPI BOOL SetConsoleCP (UINT); +WINAPI BOOL SetConsoleCtrlHandler (PHANDLER_ROUTINE, BOOL); +WINAPI BOOL SetConsoleCursorInfo (HANDLE, const CONSOLE_CURSOR_INFO *); +WINAPI BOOL SetConsoleCursorPosition (HANDLE, COORD); +WINAPI BOOL SetConsoleMode (HANDLE, DWORD); +WINAPI BOOL SetConsoleOutputCP (UINT); +WINAPI BOOL SetConsoleScreenBufferSize (HANDLE, COORD); +WINAPI BOOL SetConsoleTextAttribute (HANDLE, WORD); + +#define SetConsoleTitle __AW_SUFFIXED__(SetConsoleTitle) +WINAPI BOOL SetConsoleTitleA (LPCSTR); +WINAPI BOOL SetConsoleTitleW (LPCWSTR); + +WINAPI BOOL SetConsoleWindowInfo (HANDLE, BOOL, const SMALL_RECT *); + +#define WriteConsole __AW_SUFFIXED__(WriteConsole) +WINAPI BOOL WriteConsoleA (HANDLE, PCVOID, DWORD, PDWORD, PVOID); +WINAPI BOOL WriteConsoleW (HANDLE, PCVOID, DWORD, PDWORD, PVOID); + +#define WriteConsoleInput __AW_SUFFIXED__(WriteConsoleInput) +WINAPI BOOL WriteConsoleInputA (HANDLE, const INPUT_RECORD *, DWORD, PDWORD); +WINAPI BOOL WriteConsoleInputW (HANDLE, const INPUT_RECORD *, DWORD, PDWORD); + +#define WriteConsoleOutput __AW_SUFFIXED__(WriteConsoleOutput) +WINAPI BOOL WriteConsoleOutputA (HANDLE, const CHAR_INFO *, COORD, COORD, PSMALL_RECT); +WINAPI BOOL WriteConsoleOutputW (HANDLE, const CHAR_INFO *, COORD, COORD, PSMALL_RECT); + +WINAPI BOOL WriteConsoleOutputAttribute (HANDLE, const WORD *, DWORD, COORD, PDWORD); + +#define WriteConsoleOutputCharacter __AW_SUFFIXED__(WriteConsoleOutputCharacter) +WINAPI BOOL WriteConsoleOutputCharacterA (HANDLE, LPCSTR, DWORD, COORD, PDWORD); +WINAPI BOOL WriteConsoleOutputCharacterW (HANDLE, LPCWSTR, DWORD, COORD, PDWORD); + +#if _WIN32_WINNT >= _WIN32_WINNT_WIN2K + +#define CONSOLE_FULLSCREEN 0x0001 +#define CONSOLE_FULLSCREEN_HARDWARE 0x0002 + +WINAPI BOOL GetConsoleDisplayMode (LPDWORD); +WINAPI COORD GetConsoleFontSize (HANDLE, DWORD); +WINAPI HWND GetConsoleWindow (void); + +#if _WIN32_WINNT >= _WIN32_WINNT_WINXP + +#define CONSOLE_FULLSCREEN_MODE 0x0001 +#define CONSOLE_WINDOWED_MODE 0x0002 +#define CONSOLE_NO_SELECTION 0x0000 +#define CONSOLE_SELECTION_IN_PROGRESS 0x0001 +#define CONSOLE_SELECTION_NOT_EMPTY 0x0002 +#define CONSOLE_MOUSE_SELECTION 0x0004 +#define CONSOLE_MOUSE_DOWN 0x0008 + +typedef +struct _CONSOLE_FONT_INFO +{ DWORD nFont; + COORD dwFontSize; +} CONSOLE_FONT_INFO, *PCONSOLE_FONT_INFO; + +typedef +struct _CONSOLE_SELECTION_INFO +{ DWORD dwFlags; + COORD dwSelectionAnchor; + SMALL_RECT srSelection; +} CONSOLE_SELECTION_INFO, *PCONSOLE_SELECTION_INFO; + +#define AddConsoleAlias __AW_SUFFIXED__(AddConsoleAlias) +WINAPI BOOL AddConsoleAliasA (LPCSTR, LPCSTR, LPCSTR); +WINAPI BOOL AddConsoleAliasW (LPCWSTR, LPCWSTR, LPCWSTR); + +#define ATTACH_PARENT_PROCESS ((DWORD)(-1)) + +WINAPI BOOL AttachConsole (DWORD); + +#define GetConsoleAliases __AW_SUFFIXED__(GetConsoleAliases) +WINAPI DWORD GetConsoleAliasesA (LPSTR, DWORD, LPSTR); +WINAPI DWORD GetConsoleAliasesW (LPWSTR, DWORD, LPWSTR); + +#define GetConsoleAliasExes __AW_SUFFIXED__(GetConsoleAliasExes) +WINAPI DWORD GetConsoleAliasExesA (LPSTR, DWORD); +WINAPI DWORD GetConsoleAliasExesW (LPWSTR, DWORD); + +#define GetConsoleAliasesLength __AW_SUFFIXED__(GetConsoleAliasesLength) +WINAPI DWORD GetConsoleAliasesLengthA (LPSTR); +WINAPI DWORD GetConsoleAliasesLengthW (LPWSTR); + +#define GetConsoleAliasExesLength __AW_SUFFIXED__(GetConsoleAliasExesLength) +WINAPI DWORD GetConsoleAliasExesLengthA (void); +WINAPI DWORD GetConsoleAliasExesLengthW (void); + +WINAPI BOOL GetConsoleSelectionInfo (PCONSOLE_SELECTION_INFO); +WINAPI DWORD GetConsoleProcessList (LPDWORD, DWORD); +WINAPI BOOL GetCurrentConsoleFont (HANDLE, BOOL, PCONSOLE_FONT_INFO); +WINAPI BOOL SetConsoleDisplayMode (HANDLE, DWORD, PCOORD); + +#if _WIN32_WINNT >= _WIN32_WINNT_VISTA + +#define HISTORY_NO_DUP_FLAG 0x0001 + +typedef +struct _CONSOLE_FONT_INFOEX +{ ULONG cbSize; + DWORD nFont; + COORD dwFontSize; + UINT FontFamily; + UINT FontWeight; + WCHAR FaceName[LF_FACESIZE]; } CONSOLE_FONT_INFOEX, *PCONSOLE_FONT_INFOEX; -typedef struct { - UINT cbSize; - UINT HistoryBufferSize; - UINT NumberOfHistoryBuffers; - DWORD dwFlags; + +typedef +struct +{ UINT cbSize; + UINT HistoryBufferSize; + UINT NumberOfHistoryBuffers; + DWORD dwFlags; } CONSOLE_HISTORY_INFO, *PCONSOLE_HISTORY_INFO; -typedef struct _CONSOLE_READCONSOLE_CONTROL { - ULONG nLength; - ULONG nInitialChars; - ULONG dwCtrlWakeupMask; - ULONG dwControlKeyState; + +typedef +struct _CONSOLE_READCONSOLE_CONTROL +{ ULONG nLength; + ULONG nInitialChars; + ULONG dwCtrlWakeupMask; + ULONG dwControlKeyState; } CONSOLE_READCONSOLE_CONTROL, *PCONSOLE_READCONSOLE_CONTROL; -#endif -typedef struct _CONSOLE_SCREEN_BUFFER_INFO { - COORD dwSize; - COORD dwCursorPosition; - WORD wAttributes; - SMALL_RECT srWindow; - COORD dwMaximumWindowSize; -} CONSOLE_SCREEN_BUFFER_INFO,*PCONSOLE_SCREEN_BUFFER_INFO; -#if (_WIN32_WINNT >= 0x0600) -typedef struct _CONSOLE_SCREEN_BUFFER_INFOEX { - ULONG cbSize; - COORD dwSize; - COORD dwCursorPosition; - WORD wAttributes; - SMALL_RECT srWindow; - COORD dwMaximumWindowSize; - WORD wPopupAttributes; - BOOL bFullscreenSupported; - COLORREF ColorTable[16]; +typedef +struct _CONSOLE_SCREEN_BUFFER_INFOEX +{ ULONG cbSize; + COORD dwSize; + COORD dwCursorPosition; + WORD wAttributes; + SMALL_RECT srWindow; + COORD dwMaximumWindowSize; + WORD wPopupAttributes; + BOOL bFullscreenSupported; + COLORREF ColorTable[16]; } CONSOLE_SCREEN_BUFFER_INFOEX, *PCONSOLE_SCREEN_BUFFER_INFOEX; -#endif -#if (_WIN32_WINNT >= 0x0501) -typedef struct _CONSOLE_SELECTION_INFO { - DWORD dwFlags; - COORD dwSelectionAnchor; - SMALL_RECT srSelection; -} CONSOLE_SELECTION_INFO, *PCONSOLE_SELECTION_INFO; -#endif -typedef BOOL(CALLBACK *PHANDLER_ROUTINE)(DWORD); -typedef struct _KEY_EVENT_RECORD { - BOOL bKeyDown; - WORD wRepeatCount; - WORD wVirtualKeyCode; - WORD wVirtualScanCode; - union { - WCHAR UnicodeChar; - CHAR AsciiChar; - } uChar; - DWORD dwControlKeyState; -} -#ifdef __GNUC__ -/* gcc's alignment is not what win32 expects */ - __attribute__((packed)) -#endif -KEY_EVENT_RECORD; -typedef struct _MOUSE_EVENT_RECORD { - COORD dwMousePosition; - DWORD dwButtonState; - DWORD dwControlKeyState; - DWORD dwEventFlags; -} MOUSE_EVENT_RECORD; -typedef struct _WINDOW_BUFFER_SIZE_RECORD { COORD dwSize; } WINDOW_BUFFER_SIZE_RECORD; -typedef struct _MENU_EVENT_RECORD { UINT dwCommandId; } MENU_EVENT_RECORD,*PMENU_EVENT_RECORD; -typedef struct _FOCUS_EVENT_RECORD { BOOL bSetFocus; } FOCUS_EVENT_RECORD; -typedef struct _INPUT_RECORD { - WORD EventType; - union { - KEY_EVENT_RECORD KeyEvent; - MOUSE_EVENT_RECORD MouseEvent; - WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent; - MENU_EVENT_RECORD MenuEvent; - FOCUS_EVENT_RECORD FocusEvent; - } Event; -} INPUT_RECORD,*PINPUT_RECORD; - -#if (_WIN32_WINNT >= 0x0501) -BOOL WINAPI AddConsoleAliasA(LPCSTR,LPCSTR,LPCSTR); -BOOL WINAPI AddConsoleAliasW(LPCWSTR,LPCWSTR,LPCWSTR); -#endif -BOOL WINAPI AllocConsole(void); -#if (_WIN32_WINNT >= 0x0501) -#define ATTACH_PARENT_PROCESS ((DWORD)-1) -BOOL WINAPI AttachConsole(DWORD); -#endif -HANDLE WINAPI CreateConsoleScreenBuffer(DWORD,DWORD,CONST SECURITY_ATTRIBUTES*,DWORD,LPVOID); -BOOL WINAPI FillConsoleOutputAttribute(HANDLE,WORD,DWORD,COORD,PDWORD); -BOOL WINAPI FillConsoleOutputCharacterA(HANDLE,CHAR,DWORD,COORD,PDWORD); -BOOL WINAPI FillConsoleOutputCharacterW(HANDLE,WCHAR,DWORD,COORD,PDWORD); -BOOL WINAPI FlushConsoleInputBuffer(HANDLE); -BOOL WINAPI FreeConsole(void); -BOOL WINAPI GenerateConsoleCtrlEvent(DWORD,DWORD); -DWORD WINAPI GetConsoleAliasA(LPSTR,LPSTR,DWORD,LPSTR); -DWORD WINAPI GetConsoleAliasW(LPWSTR,LPWSTR,DWORD,LPWSTR); -#if (_WIN32_WINNT >= 0x0501) -DWORD WINAPI GetConsoleAliasesA(LPSTR,DWORD,LPSTR); -DWORD WINAPI GetConsoleAliasesW(LPWSTR,DWORD,LPWSTR); -DWORD WINAPI GetConsoleAliasExesA(LPSTR,DWORD); -DWORD WINAPI GetConsoleAliasExesW(LPWSTR,DWORD); -DWORD WINAPI GetConsoleAliasesLengthA(LPSTR); -DWORD WINAPI GetConsoleAliasesLengthW(LPWSTR); -DWORD WINAPI GetConsoleAliasExesLengthA(void); -DWORD WINAPI GetConsoleAliasExesLengthW(void); -#endif -UINT WINAPI GetConsoleCP(void); -#if (_WIN32_WINNT >= 0x0500) -COORD WINAPI GetConsoleFontSize(HANDLE,DWORD); -#endif -BOOL WINAPI GetConsoleCursorInfo(HANDLE,PCONSOLE_CURSOR_INFO); -#if (_WIN32_WINNT >= 0x0600) -BOOL WINAPI GetConsoleHistoryInfo(PCONSOLE_HISTORY_INFO); -#endif -BOOL WINAPI GetConsoleMode(HANDLE,PDWORD); -#if (_WIN32_WINNT >= 0x0600) -DWORD WINAPI GetConsoleOriginalTitleA(LPSTR,DWORD); -DWORD WINAPI GetConsoleOriginalTitleW(LPWSTR,DWORD); -#endif -UINT WINAPI GetConsoleOutputCP(void); -#if (_WIN32_WINNT >= 0x0501) -BOOL WINAPI GetConsoleSelectionInfo(PCONSOLE_SELECTION_INFO); -#endif -BOOL WINAPI GetConsoleScreenBufferInfo(HANDLE,PCONSOLE_SCREEN_BUFFER_INFO); -#if (_WIN32_WINNT >= 0x0600) -BOOL WINAPI GetConsoleScreenBufferInfoEx(HANDLE,PCONSOLE_SCREEN_BUFFER_INFOEX); -#endif -DWORD WINAPI GetConsoleTitleA(LPSTR,DWORD); -DWORD WINAPI GetConsoleTitleW(LPWSTR,DWORD); -#if (_WIN32_WINNT >= 0x0500) -BOOL WINAPI GetConsoleDisplayMode(LPDWORD); -HWND WINAPI GetConsoleWindow(void); -#endif -#if (_WIN32_WINNT >= 0x0501) -DWORD WINAPI GetConsoleProcessList(LPDWORD, DWORD); -BOOL WINAPI GetCurrentConsoleFont(HANDLE,BOOL,PCONSOLE_FONT_INFO); -#endif -#if (_WIN32_WINNT >= 0x0600) -BOOL WINAPI GetCurrentConsoleFontEx(HANDLE,BOOL,PCONSOLE_FONT_INFOEX); -#endif -COORD WINAPI GetLargestConsoleWindowSize(HANDLE); -BOOL WINAPI GetNumberOfConsoleInputEvents(HANDLE,PDWORD); -BOOL WINAPI GetNumberOfConsoleMouseButtons(PDWORD); -BOOL WINAPI HandlerRoutine(DWORD); -BOOL WINAPI PeekConsoleInputA(HANDLE,PINPUT_RECORD,DWORD,PDWORD); -BOOL WINAPI PeekConsoleInputW(HANDLE,PINPUT_RECORD,DWORD,PDWORD); -BOOL WINAPI ReadConsoleA(HANDLE,PVOID,DWORD,PDWORD,PVOID); -BOOL WINAPI ReadConsoleW(HANDLE,PVOID,DWORD,PDWORD,PVOID); -BOOL WINAPI ReadConsoleInputA(HANDLE,PINPUT_RECORD,DWORD,PDWORD); -BOOL WINAPI ReadConsoleInputW(HANDLE,PINPUT_RECORD,DWORD,PDWORD); -BOOL WINAPI ReadConsoleOutputAttribute(HANDLE,LPWORD,DWORD,COORD,LPDWORD); -BOOL WINAPI ReadConsoleOutputCharacterA(HANDLE,LPSTR,DWORD,COORD,PDWORD); -BOOL WINAPI ReadConsoleOutputCharacterW(HANDLE,LPWSTR,DWORD,COORD,PDWORD); -BOOL WINAPI ReadConsoleOutputA(HANDLE,PCHAR_INFO,COORD,COORD,PSMALL_RECT); -BOOL WINAPI ReadConsoleOutputW(HANDLE,PCHAR_INFO,COORD,COORD,PSMALL_RECT); -BOOL WINAPI ScrollConsoleScreenBufferA(HANDLE,const SMALL_RECT*,const SMALL_RECT*,COORD,const CHAR_INFO*); -BOOL WINAPI ScrollConsoleScreenBufferW(HANDLE,const SMALL_RECT*,const SMALL_RECT*,COORD,const CHAR_INFO*); -BOOL WINAPI SetConsoleActiveScreenBuffer(HANDLE); -BOOL WINAPI SetConsoleCP(UINT); -BOOL WINAPI SetConsoleCtrlHandler(PHANDLER_ROUTINE,BOOL); -BOOL WINAPI SetConsoleCursorInfo(HANDLE,const CONSOLE_CURSOR_INFO*); -BOOL WINAPI SetConsoleCursorPosition(HANDLE,COORD); -#if (_WIN32_WINNT >= 0x0501) -BOOL WINAPI SetConsoleDisplayMode(HANDLE,DWORD,PCOORD); -#endif -#if (_WIN32_WINNT >= 0x0600) -BOOL WINAPI SetConsoleHistoryInfo(PCONSOLE_HISTORY_INFO); -#endif -BOOL WINAPI SetConsoleMode(HANDLE,DWORD); -BOOL WINAPI SetConsoleOutputCP(UINT); -#if (_WIN32_WINNT >= 0x0600) -BOOL WINAPI SetConsoleScreenBufferInfoEx(HANDLE,PCONSOLE_SCREEN_BUFFER_INFOEX); -#endif -BOOL WINAPI SetConsoleScreenBufferSize(HANDLE,COORD); -BOOL WINAPI SetConsoleTextAttribute(HANDLE,WORD); -BOOL WINAPI SetConsoleTitleA(LPCSTR); -BOOL WINAPI SetConsoleTitleW(LPCWSTR); -BOOL WINAPI SetConsoleWindowInfo(HANDLE,BOOL,const SMALL_RECT*); -#if (_WIN32_WINNT >= 0x0600) -BOOL WINAPI SetCurrentConsoleFontEx(HANDLE,BOOL,PCONSOLE_FONT_INFOEX); -#endif -BOOL WINAPI WriteConsoleA(HANDLE,PCVOID,DWORD,PDWORD,PVOID); -BOOL WINAPI WriteConsoleW(HANDLE,PCVOID,DWORD,PDWORD,PVOID); -BOOL WINAPI WriteConsoleInputA(HANDLE,const INPUT_RECORD*,DWORD,PDWORD); -BOOL WINAPI WriteConsoleInputW(HANDLE,const INPUT_RECORD*,DWORD,PDWORD); -BOOL WINAPI WriteConsoleOutputA(HANDLE,const CHAR_INFO*,COORD,COORD,PSMALL_RECT); -BOOL WINAPI WriteConsoleOutputW(HANDLE,const CHAR_INFO*,COORD,COORD,PSMALL_RECT); -BOOL WINAPI WriteConsoleOutputAttribute(HANDLE,const WORD*,DWORD,COORD,PDWORD); -BOOL WINAPI WriteConsoleOutputCharacterA(HANDLE,LPCSTR,DWORD,COORD,PDWORD); -BOOL WINAPI WriteConsoleOutputCharacterW(HANDLE,LPCWSTR,DWORD,COORD,PDWORD); - -#ifdef UNICODE -#define AddConsoleAlias AddConsoleAliasW -#define FillConsoleOutputCharacter FillConsoleOutputCharacterW -#define GetConsoleAlias GetConsoleAliasW -#define GetConsoleAliases GetConsoleAliasesW -#define GetConsoleAliasExes GetConsoleAliasExesW -#define GetConsoleAliasesLength GetConsoleAliasesLengthW -#define GetConsoleAliasExesLength GetConsoleAliasExesLengthW -#define GetConsoleOriginalTitle GetConsoleOriginalTitleW -#define GetConsoleTitle GetConsoleTitleW -#define PeekConsoleInput PeekConsoleInputW -#define ReadConsole ReadConsoleW -#define ReadConsoleInput ReadConsoleInputW -#define ReadConsoleOutput ReadConsoleOutputW -#define ReadConsoleOutputCharacter ReadConsoleOutputCharacterW -#define ScrollConsoleScreenBuffer ScrollConsoleScreenBufferW -#define SetConsoleTitle SetConsoleTitleW -#define WriteConsole WriteConsoleW -#define WriteConsoleInput WriteConsoleInputW -#define WriteConsoleOutput WriteConsoleOutputW -#define WriteConsoleOutputCharacter WriteConsoleOutputCharacterW -#else -#define AddConsoleAlias AddConsoleAliasA -#define FillConsoleOutputCharacter FillConsoleOutputCharacterA -#define GetConsoleAlias GetConsoleAliasA -#define GetConsoleAliases GetConsoleAliasesA -#define GetConsoleAliasExes GetConsoleAliasExesA -#define GetConsoleAliasesLength GetConsoleAliasesLengthA -#define GetConsoleAliasExesLength GetConsoleAliasExesLengthA -#define GetConsoleOriginalTitle GetConsoleOriginalTitleA -#define GetConsoleTitle GetConsoleTitleA -#define PeekConsoleInput PeekConsoleInputA -#define ReadConsole ReadConsoleA -#define ReadConsoleInput ReadConsoleInputA -#define ReadConsoleOutput ReadConsoleOutputA -#define ReadConsoleOutputCharacter ReadConsoleOutputCharacterA -#define ScrollConsoleScreenBuffer ScrollConsoleScreenBufferA -#define SetConsoleTitle SetConsoleTitleA -#define WriteConsole WriteConsoleA -#define WriteConsoleInput WriteConsoleInputA -#define WriteConsoleOutput WriteConsoleOutputA -#define WriteConsoleOutputCharacter WriteConsoleOutputCharacterA -#endif +WINAPI BOOL GetConsoleHistoryInfo (PCONSOLE_HISTORY_INFO); + +#define GetConsoleOriginalTitle __AW_SUFFIXED__(GetConsoleOriginalTitle) +WINAPI DWORD GetConsoleOriginalTitleA (LPSTR, DWORD); +WINAPI DWORD GetConsoleOriginalTitleW (LPWSTR, DWORD); + +WINAPI BOOL GetConsoleScreenBufferInfoEx (HANDLE, PCONSOLE_SCREEN_BUFFER_INFOEX); +WINAPI BOOL GetCurrentConsoleFontEx (HANDLE, BOOL, PCONSOLE_FONT_INFOEX); +WINAPI BOOL SetConsoleHistoryInfo (PCONSOLE_HISTORY_INFO); +WINAPI BOOL SetConsoleScreenBufferInfoEx (HANDLE, PCONSOLE_SCREEN_BUFFER_INFOEX); +WINAPI BOOL SetCurrentConsoleFontEx (HANDLE, BOOL, PCONSOLE_FONT_INFOEX); + +#endif /* Vista and later */ +#endif /* WinXP and later */ +#endif /* Win2K and later */ _END_C_DECLS -#endif +#endif /* !_WINCON_H: $RCSfile$: end of file */ -- 2.11.0