下面介紹幾個用於控制台窗口操作的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編譯通過。