1. 编写控制台程序,获得标准输入输出的窗口句柄
GetStdHandle
函数声明如下 :
HANDLE GetStdHandle(
DWORD nStdHandle
);
GetStdHandle()返回标准的输入、输出或错误的设备的句柄,也就是获得输入、输出 /错误的屏幕缓冲区的句柄。
其参数nStdHandle的值为下面几种类型的一种:
值 含义
STD_INPUT_HANDLE 标准输入的句柄
STD_OUTPUT_HANDLE 标准输出的句柄
STD_ERROR_HANDLE 标准错误的句柄
2. SetConsoleTextAttribute是API设置控制台字体颜色和背景色的函数。广泛应用于电脑编程
BOOL SetConsoleTextAttribute(
HANDLE hConsoleOutput, // 使用GetStdHandle取得的句柄
WORD wAttributes // 设置文本、背景色
);
wAttributes可以取下面的值
FOREGROUND_BLUE Text color contains blue.
FOREGROUND_GREEN Text color contains green.
FOREGROUND_RED Text color contains red.
FOREGROUND_INTENSITY Text color is intensified.
BACKGROUND_BLUE Background color contains blue.
BACKGROUND_GREEN Background color contains green.
BACKGROUND_RED Background color contains red.
BACKGROUND_INTENSITY Background color is intensified.
COMMON_LVB_LEADING_BYTE Leading byte.
COMMON_LVB_TRAILING_BYTE Trailing byte.
COMMON_LVB_GRID_HORIZONTAL Top horizontal.
COMMON_LVB_GRID_LVERTICAL Left vertical.
COMMON_LVB_GRID_RVERTICAL Right vertical.
COMMON_LVB_REVERSE_VIDEO Reverse foreground and background attributes.
COMMON_LVB_UNDERSCORE Underscore.
3. CONSOLE_CURSOR_INFO用于存放控制光标信息
typedef struct _CONSOLE_CURSOR_INFO {
DWORD dwSize;
BOOL bVisible;
} CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO;
dwSize:光标大小,1-100的值
bVisible:光标是否可见
4. SetConsoleCursorInfo设置光标的信息
BOOL SetConsoleCursorInfo(
HANDLE hConsoleOutput, // 使用GetStdHandle取得的句柄
CONST CONSOLE_CURSOR_INFO *lpConsoleCursorInfo // 光标信息
);
5. _CONSOLE_SCREEN_BUFFER_INFO: contains information about a console screen buffer
typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
COORD dwSize; // Size, in character columns and rows, of the screen buffer.
COORD dwCursorPosition; // 当前光标在屏幕的位置
WORD wAttributes; // 控制台相当于显示屏的坐标,左上和右下的坐标
SMALL_RECT srWindow; // 字符背景属性,同SetConsoleTextAttribute
COORD dwMaximumWindowSize; // 控制台窗口的大小
} CONSOLE_SCREEN_BUFFER_INFO ;
6. GetConsoleScreenBufferInfo取得控制台屏幕信息
BOOL GetConsoleScreenBufferInfo(
HANDLE hConsoleOutput, // GetStdHandle取得的句柄
PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo // screen buffer information
);
7. SetConsoleCursorPosition设置光标位置
BOOL SetConsoleCursorPosition(
HANDLE hConsoleOutput, // handle to screen buffer
COORD dwCursorPosition // new cursor coordinates
);
8. WriteConsoleOutput直接写输入缓冲区。可以写入键盘、鼠标等任何Console能够接收的事件(Event)都可以写进去。键盘操作如果是一些可显示字符可以直接写 ASCII字符,否则的话可能要用键盘扫描码(scan code)了
BOOL WriteConsoleOutput(
HANDLE hConsoleOutput, // handle to screen buffer
CONST CHAR_INFO *lpBuffer, // data buffer
COORD dwBufferSize, // size of data buffer
COORD dwBufferCoord, // cell coordinates
PSMALL_RECT lpWriteRegion // rectangle to write
);
9. SetConsoleTitle设置控制台的标题
BOOL SetConsoleTitle(
LPCTSTR lpConsoleTitle // new console title
);
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/518171/viewspace-677906/,如需转载,请注明出处,否则将追究法律责任。
本文介绍了如何在Linux系统中通过API函数获取控制台的标准输入、输出和错误句柄,并使用这些句柄进行控制台文本颜色设置、光标管理和窗口标题设置等操作。
821

被折叠的 条评论
为什么被折叠?



