254 lines
4.2 KiB
C
254 lines
4.2 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1990 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
console.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
Interface to the console-management functions for Win32 applications.
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Ramon Juan San Andres (ramonsa) 30-Nov-1990
|
||
|
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
|
||
|
--*/
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
//
|
||
|
// Some common typedefs...
|
||
|
//
|
||
|
typedef ULONG ROW, *PROW; // row
|
||
|
typedef ULONG COLUMN, *PCOLUMN; // column
|
||
|
typedef DWORD KBDMODE, *PKBDMODE; // Keyboard mode
|
||
|
typedef DWORD ATTRIBUTE, *PATTRIBUTE; // Screen Attribute
|
||
|
typedef PVOID PSCREEN; // The screen
|
||
|
|
||
|
|
||
|
|
||
|
//
|
||
|
// Console Input Mode flags. They are the same as the NT flags
|
||
|
//
|
||
|
#define CONS_ENABLE_LINE_INPUT ENABLE_LINE_INPUT
|
||
|
#define CONS_ENABLE_PROCESSED_INPUT ENABLE_PROCESSED_INPUT
|
||
|
#define CONS_ENABLE_ECHO_INPUT ENABLE_ECHO_INPUT
|
||
|
#define CONS_ENABLE_WINDOW_INPUT ENABLE_WINDOW_INPUT
|
||
|
#define CONS_ENABLE_MOUSE_INPUT ENABLE_MOUSE_INPUT
|
||
|
|
||
|
//
|
||
|
// Cursor styles
|
||
|
//
|
||
|
#define CURSOR_STYLE_UNDERSCORE 0
|
||
|
#define CURSOR_STYLE_BOX 1
|
||
|
|
||
|
|
||
|
//
|
||
|
// The information about a screen is retrieved in the following
|
||
|
// structure:
|
||
|
//
|
||
|
typedef struct SCREEN_INFORMATION {
|
||
|
ROW NumberOfRows; // Number of rows
|
||
|
COLUMN NumberOfCols; // Number of columns
|
||
|
ROW CursorRow; // Cursor row position
|
||
|
COLUMN CursorCol; // Cursor column position
|
||
|
} SCREEN_INFORMATION, *PSCREEN_INFORMATION;
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
//
|
||
|
// The information about each keystroke is returned in
|
||
|
// the KBDKEY structure.
|
||
|
//
|
||
|
typedef struct KBDKEY {
|
||
|
WORD Unicode; // character unicode
|
||
|
WORD Scancode; // key scan code
|
||
|
DWORD Flags; // keyboard state flags
|
||
|
} KBDKEY, *PKBDKEY;
|
||
|
|
||
|
//
|
||
|
// The following macros access particular fields within the
|
||
|
// KBDKEY structure. They exist to facilitate porting of OS/2
|
||
|
// programs.
|
||
|
//
|
||
|
#define KBDKEY_ASCII(k) (UCHAR)((k).Unicode)
|
||
|
#define KBDKEY_SCAN(k) ((k).Scancode)
|
||
|
#define KBDKEY_FLAGS(k) ((k).Flags)
|
||
|
|
||
|
|
||
|
#define NEXT_EVENT_NONE 0
|
||
|
#define NEXT_EVENT_KEY 1
|
||
|
#define NEXT_EVENT_WINDOW 2
|
||
|
|
||
|
//
|
||
|
// ControlKeyState flags. They are the same as the NT status flags.
|
||
|
//
|
||
|
#define CONS_RIGHT_ALT_PRESSED RIGHT_ALT_PRESSED
|
||
|
#define CONS_LEFT_ALT_PRESSED LEFT_ALT_PRESSED
|
||
|
#define CONS_RIGHT_CTRL_PRESSED RIGHT_CTRL_PRESSED
|
||
|
#define CONS_LEFT_CTRL_PRESSED LEFT_CTRL_PRESSED
|
||
|
#define CONS_SHIFT_PRESSED SHIFT_PRESSED
|
||
|
#define CONS_NUMLOCK_PRESSED NUMLOCK_ON
|
||
|
#define CONS_SCROLLLOCK_PRESSED SCROLLLOCK_ON
|
||
|
#define CONS_CAPSLOCK_PRESSED CAPSLOCK_ON
|
||
|
#define CONS_ENHANCED_KEY ENHANCED_KEY
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
//
|
||
|
// Screen Management functions
|
||
|
//
|
||
|
PSCREEN
|
||
|
consoleNewScreen (
|
||
|
void
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
consoleCloseScreen (
|
||
|
PSCREEN pScreen
|
||
|
);
|
||
|
|
||
|
PSCREEN
|
||
|
consoleGetCurrentScreen (
|
||
|
void
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
consoleSetCurrentScreen (
|
||
|
PSCREEN pScreen
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
consoleGetScreenInformation (
|
||
|
PSCREEN pScreen,
|
||
|
PSCREEN_INFORMATION pScreenInformation
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
consoleSetScreenSize (
|
||
|
PSCREEN Screen,
|
||
|
ROW Rows,
|
||
|
COLUMN Cols
|
||
|
);
|
||
|
|
||
|
|
||
|
|
||
|
//
|
||
|
// Cursor management
|
||
|
//
|
||
|
BOOL
|
||
|
consoleSetCursor (
|
||
|
PSCREEN pScreen,
|
||
|
ROW Row,
|
||
|
COLUMN Col
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// Cursor style
|
||
|
//
|
||
|
BOOL
|
||
|
consoleSetCursorStyle (
|
||
|
PSCREEN pScreen,
|
||
|
ULONG Style
|
||
|
);
|
||
|
|
||
|
|
||
|
|
||
|
//
|
||
|
// Screen output functions
|
||
|
//
|
||
|
ULONG
|
||
|
consoleWriteLine (
|
||
|
PSCREEN pScreen,
|
||
|
PVOID pBuffer,
|
||
|
ULONG BufferSize,
|
||
|
ROW Row,
|
||
|
COLUMN Col,
|
||
|
ATTRIBUTE Attribute,
|
||
|
BOOL Blank
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
consoleShowScreen (
|
||
|
PSCREEN pScreen
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
consoleClearScreen (
|
||
|
PSCREEN pScreen,
|
||
|
BOOL ShowScreen
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
consoleSetAttribute (
|
||
|
PSCREEN pScreen,
|
||
|
ATTRIBUTE Attribute
|
||
|
);
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
//
|
||
|
// Input functions
|
||
|
//
|
||
|
BOOL
|
||
|
consoleFlushInput (
|
||
|
void
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
consoleIsKeyAvailable (
|
||
|
void
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
consoleDoWindow (
|
||
|
void
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
consoleGetKey (
|
||
|
PKBDKEY pKey,
|
||
|
BOOL fWait
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
consolePutKey (
|
||
|
PKBDKEY pKey
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
consolePutMouse (
|
||
|
ROW Row,
|
||
|
COLUMN Col,
|
||
|
DWORD MouseFlags
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
consolePeekKey (
|
||
|
PKBDKEY pKey
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
consoleGetMode (
|
||
|
PKBDMODE Mode
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
consoleSetMode (
|
||
|
KBDMODE Mode
|
||
|
);
|