336 lines
7.1 KiB
C
336 lines
7.1 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 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
|
|
|