在linux系统如何获得窗口句柄,编写控制台程序,获得标准输入输出的窗口句柄...

本文介绍了如何在Linux系统中通过API函数获取控制台的标准输入、输出和错误句柄,并使用这些句柄进行控制台文本颜色设置、光标管理和窗口标题设置等操作。

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/,如需转载,请注明出处,否则将追究法律责任。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值