在linux系统如何获得窗口句柄,编写控制台程序,获得标准输入输出的窗口句柄...
1. 編寫控制臺程序,獲得標準輸入輸出的窗口句柄
GetStdHandle
函數聲明如下 :
HANDLE GetStdHandle(
DWORD nStdHandle
);
GetStdHandle()返回標準的輸入、輸出或錯誤的設備的句柄,也就是獲得輸入、輸出 /錯誤的屏幕緩沖區(qū)的句柄。
其參數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直接寫輸入緩沖區(qū)??梢詫懭腈I盤、鼠標等任何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系统如何获得窗口句柄,编写控制台程序,获得标准输入输出的窗口句柄...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【观察】打造产业数字引擎背后,紫光云价值
- 下一篇: 微粒群算法(一、简介)