258 lines
6.9 KiB
C
258 lines
6.9 KiB
C
#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
|
|
|