下面介紹幾個用於控制台視窗操作的API函數,如下:
//擷取控制台視窗資訊 GetConsoleScreenBufferInfo(); //擷取控制台視窗標題 GetConsoleTitle(); //更改指定緩衝區大小 SetConsoleScreenBufferSize(); //設定控制台視窗標題 SetConsoleTitle(); //設定控制台視窗資訊 SetConsoleWindowInfo();
下面的樣本程式用於說明此類函數的使用:
#include <stdio.h> #include <stdlib.h> #include <Windows.h> #include <conio.h> #define N 255 int main() { HANDLE handle_out; //定義一個控制代碼 CONSOLE_SCREEN_BUFFER_INFO scbi; //定義一個視窗緩衝區資訊結構體 COORD size = {80, 25}; //定義一個座標結構體 char strtitle[N]; handle_out = GetStdHandle(STD_OUTPUT_HANDLE); //獲得標準輸出裝置控制代碼 GetConsoleScreenBufferInfo(handle_out, &scbi); //獲得視窗緩衝區資訊 GetConsoleTitle(strtitle, N); //獲得當前視窗標題 printf("當前視窗標題為:%s\n", strtitle); _getch(); SetConsoleTitle("控制台視窗操作"); //設定視窗標題為“控制台視窗操作” GetConsoleTitle(strtitle, N); //獲得當前視窗標題 printf("當前視窗標題為:%s\n", strtitle); _getch(); SetConsoleScreenBufferSize(handle_out, size); // 重新設定緩衝區大小 _getch(); SMALL_RECT rc = {0, 0, 80-1, 25-1}; // 重設視窗位置和大小 SetConsoleWindowInfo(handle_out, 1, &rc); CloseHandle(handle_out); //關閉標準輸出裝置控制代碼 return 0; }
其中,SetConsoleScreenBufferSize函數指定新的控制台螢幕緩衝區的大小,以字元列和行為單位。指定的寬度和高度不能小於控制台螢幕緩衝區視窗的寬度和高度。指定的大小也不能小於系統允許的最小大小。這個最低取決於控制台當前的字型大小 (由使用者選定)。
另外,GetConsoleTitle函數的具體實現取是否宏定義了UNICODE(與檔案編碼形式有關),所以在部分IDE中可能這段樣本編譯不通過,換一個別的編譯器或IDE就行了。本範例在Code::Blocks 13.12編譯通過。