#ifndef _WINCON_H_ #define _WINCON_H_ #ifdef UNICODE #define FillConsoleOutputCharacter FillConsoleOutputCharacterW #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 FillConsoleOutputCharacter FillConsoleOutputCharacterA #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 #if 0 typedef struct { int bKeyDown; WORD wRepeatCount; WORD wVirtualKeyCode; WORD wVirtualScanCode; char AsciiChar; char pad; #if 0 union { WCHAR UnicodeChar; CHAR AsciiChar; } uChar; #endif DWORD dwControlKeyState; } __attribute__ ((packed)) KEY_EVENT_RECORD; #define RIGHT_ALT_PRESSED 0x1 #define LEFT_ALT_PRESSED 0x2 #define RIGHT_CTRL_PRESSED 0x4 #define LEFT_CTRL_PRESSED 0x8 #define SHIFT_PRESSED 0x10 #define NUMLOCK_ON 0x20 #define SCROLLLOCK_ON 0x40 #define CAPSLOCK_ON 0x80 #define ENHANCED_KEY 0x100 typedef struct { COORD dwMousePosition; DWORD dwButtonState; DWORD dwControlKeyState; DWORD dwEventFlags; } MOUSE_EVENT_RECORD; #define CONSOLE_TEXTMODE_BUFFER 1 #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 typedef struct { COORD size; } WINDOW_BUFFER_SIZE_RECORD; typedef struct { UINT dwCommandId; } MENU_EVENT_RECORD; typedef struct { BOOL bSetFocus; } FOCUS_EVENT_RECORD; typedef struct { 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; #define KEY_EVENT 0x1 #define MOUSE_EVENT 0x2 #define WINDOW_BUFFER_SIZE_EVENT 0x4 #define MENU_EVENT 0x8 #define FOCUS_EVENT 0x10 typedef struct { union { WCHAR UnicodeChar; CHAR AsciiChar; } Char; WORD Attributes; } CHAR_INFO; #define FOREGROUND_BLUE 0x01 #define FOREGROUND_GREEN 0x02 #define FOREGROUND_RED 0x04 #define FOREGROUND_INTENSITY 0x08 #define BACKGROUND_BLUE 0x10 #define BACKGROUND_GREEN 0x20 #define BACKGROUND_RED 0x40 #define BACKGROUND_INTENSITY 0x80 typedef struct { COORD dwSize; COORD dwCursorPosition; WORD wAttrs; SMALL_RECT srWindow; COORD dwMaximumWindowSize; } CONSOLE_SCREEN_BUFFER_INFO; typedef struct { DWORD size; BOOL bVisible; } CONSOLE_CURSOR_INFO; #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 typedef BOOL HANDLER_ROUTINE (WORD ctrltype); #if 0 #define ENABLE_PROCESSED_INPUT 0x01 #define ENABLE_LINE_INPUT 0x02 #define ENABLE_ECHO_INPUT 0x04 #define ENABLE_WINDOW_INPUT 0x08 #define ENABLE_MOUSE_INPUT 0x10 #define ENABLE_PROCESSED_OUTPUT 0x01 #define ENABLE_WRAP_AT_EOL_OUTPUT 0x02 BOOL WINAPI AllocConsole (VOID); HANDLE WINAPI CreateConsoleScreenBuffer (DWORD access, DWORD mode, CONST SECURITY_ATTRIBUTES * lattr, DWORD flags, VOID * ptr); BOOL WINAPI FillConsoleOutputAttribute (HANDLE h, WORD attr, DWORD len, COORD co, DWORD * done); BOOL WINAPI FillConsoleOutputCharacterA (HANDLE h, CHAR c, DWORD len, COORD co, DWORD * done); BOOL WINAPI FlushBuffer (HANDLE h); BOOL WINAPI FreeConsole (VOID); BOOL WINAPI GenerateConsoleCtrlEvent (DWORD ev, DWORD group); UINT WINAPI GetConsoleCP (VOID); BOOL WINAPI GetConsoleCursorInfo (HANDLE h, CONSOLE_CURSOR_INFO *info); BOOL WINAPI GetConsoleMode (HANDLE h, DWORD * mode); UINT WINAPI GetConsoleOutputCP (VOID); BOOL WINAPI GetConsoleScreenBufferInfo (HANDLE h, CONSOLE_SCREEN_BUFFER_INFO * ptr); DWORD WINAPI GetConsoleTitleA (LPSTR str, DWORD len); COORD WINAPI GetLargestConsoleWindowSize (HANDLE h); BOOL WINAPI GetNumberOfConsoleInputEvents (HANDLE h, DWORD * n); BOOL WINAPI GetNumberOfConsoleMouseButtons (DWORD * n); BOOL WINAPI PeekConsoleInputA (HANDLE h, INPUT_RECORD * ptr, DWORD len, DWORD * done); BOOL WINAPI ReadConsoleA (HANDLE h, VOID * ptr, DWORD len, DWORD * done, VOID * res); BOOL WINAPI ReadConsoleInputA (HANDLE h, INPUT_RECORD * ptr, DWORD len, DWORD * done); BOOL WINAPI ReadConsoleOutputA (HANDLE h, CHAR_INFO * ptr, COORD size, COORD fred, SMALL_RECT * reg); BOOL WINAPI ReadConsoleOutputAttribute (HANDLE h, WORD * attr, DWORD len, COORD rc, DWORD * done); BOOL WINAPI ReadConsoleOutputCharacterA (HANDLE h, LPSTR c, DWORD len, COORD rc, DWORD * done); BOOL WINAPI ScrollConsoleScreenBufferA (HANDLE h, CONST SMALL_RECT * sr, CONST SMALL_RECT * cr, COORD cpos, CONST CHAR_INFO * i); BOOL WINAPI SetConsoleActiveScreenBuffer (HANDLE h); BOOL WINAPI SetConsoleCP (UINT i); BOOL WINAPI SetConsoleCtrlHandler (HANDLER_ROUTINE * func, BOOL a); BOOL WINAPI SetConsoleCursorInfo (HANDLE h, CONST CONSOLE_CURSOR_INFO * info); BOOL WINAPI SetConsoleCursorPosition (HANDLE h, COORD pos); BOOL WINAPI SetConsoleMode (HANDLE h, DWORD mode); BOOL WINAPI SetConsoleOutputCP (UINT i); BOOL WINAPI SetConsoleScreenBufferSize (HANDLE h, COORD size); BOOL WINAPI SetConsoleTextAttribute (HANDLE h, WORD attrs); BOOL WINAPI SetConsoleTitleA (const char * str); BOOL WINAPI SetConsoleWindowInfo (HANDLE h, BOOL abs, CONST SMALL_RECT * wnd); BOOL WINAPI WriteConsoleA (HANDLE h, CONST VOID * ptr, DWORD slen, DWORD * done, VOID * res); BOOL WINAPI WriteConsoleInputA (HANDLE h, CONST INPUT_RECORD * ptr, DWORD len, DWORD * done); BOOL WINAPI WriteConsoleOutputA (HANDLE h, CONST CHAR_INFO * ptr, COORD size, COORD fred, SMALL_RECT* where); BOOL WINAPI WriteConsoleOutputAttribute (HANDLE h, CONST WORD *attr, DWORD len, COORD co, DWORD * done); BOOL WINAPI WriteConsoleOutputCharacterA (HANDLE h, const char * c, DWORD len, COORD co, DWORD * done); #endif #endif