#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 AllocConsole (VOID); HANDLE CreateConsoleScreenBuffer (DWORD access, DWORD mode, CONST SECURITY_ATTRIBUTES * lattr, DWORD flags, VOID * ptr); BOOL FillConsoleOutputAttribute (HANDLE h, WORD attr, DWORD len, COORD co, DWORD * done); BOOL FillConsoleOutputCharacterA (HANDLE h, CHAR c, DWORD len, COORD co, DWORD * done); BOOL FlushBuffer (HANDLE h); BOOL FreeConsole (VOID); BOOL GenerateConsoleCtrlEvent (DWORD ev, DWORD group); UINT GetConsoleCP (VOID); BOOL GetConsoleCursorInfo (HANDLE h, CONSOLE_CURSOR_INFO *info); BOOL GetConsoleMode (HANDLE h, DWORD * mode); UINT GetConsoleOutputCP (VOID); BOOL GetConsoleScreenBufferInfo (HANDLE h, CONSOLE_SCREEN_BUFFER_INFO * ptr); DWORD GetConsoleTitleA (LPSTR str, DWORD len); COORD GetLargestConsoleWindowSize (HANDLE h); BOOL GetNumberOfConsoleInputEvents (HANDLE h, DWORD * n); BOOL GetNumberOfConsoleMouseButtons (DWORD * n); BOOL PeekConsoleInputA (HANDLE h, INPUT_RECORD * ptr, DWORD len, DWORD * done); BOOL ReadConsoleA (HANDLE h, VOID * ptr, DWORD len, DWORD * done, VOID * res); BOOL ReadConsoleInputA (HANDLE h, INPUT_RECORD * ptr, DWORD len, DWORD * done); BOOL ReadConsoleOutputA (HANDLE h, CHAR_INFO * ptr, COORD size, COORD fred, SMALL_RECT * reg); BOOL ReadConsoleOutputAttribute (HANDLE h, WORD * attr, DWORD len, COORD rc, DWORD * done); BOOL ReadConsoleOutputCharacterA (HANDLE h, LPSTR c, DWORD len, COORD rc, DWORD * done); BOOL ScrollConsoleScreenBufferA (HANDLE h, CONST SMALL_RECT * sr, CONST SMALL_RECT * cr, COORD cpos, CONST CHAR_INFO * i); BOOL SetConsoleActiveScreenBuffer (HANDLE h); BOOL SetConsoleCP (UINT i); BOOL SetConsoleCtrlHandler (HANDLER_ROUTINE * func, BOOL a); BOOL SetConsoleCursorInfo (HANDLE h, CONST CONSOLE_CURSOR_INFO * info); BOOL SetConsoleCursorPosition (HANDLE h, COORD pos); BOOL SetConsoleMode (HANDLE h, DWORD mode); BOOL SetConsoleOutputCP (UINT i); BOOL SetConsoleScreenBufferSize (HANDLE h, COORD size); BOOL SetConsoleTextAttribute (HANDLE h, WORD attrs); BOOL SetConsoleTitleA (const char * str); BOOL SetConsoleWindowInfo (HANDLE h, BOOL abs, CONST SMALL_RECT * wnd); BOOL WriteConsoleA (HANDLE h, CONST VOID * ptr, DWORD slen, DWORD * done, VOID * res); BOOL WriteConsoleInputA (HANDLE h, CONST INPUT_RECORD * ptr, DWORD len, DWORD * done); BOOL WriteConsoleOutputA (HANDLE h, CONST CHAR_INFO * ptr, COORD size, COORD fred, SMALL_RECT* where); BOOL WriteConsoleOutputAttribute (HANDLE h, CONST WORD *attr, DWORD len, COORD co, DWORD * done); BOOL WriteConsoleOutputCharacterA (HANDLE h, const char * c, DWORD len, COORD co, DWORD * done); #endif #endif