【C语言】控制台窗口图形界面编程(二)窗口信息和填充缓冲区
00. 目錄
文章目錄
- 00. 目錄
- 01. COORD結構體
- 02. SMALL_RECT結構
- 03. CONSOLE_SCREEN_BUFFER_INFO結構體
- 04. GetConsoleScreenBufferInfo函數
- 05. FillConsoleOutputCharacter 函數
- 06. 獲取窗口信息和填充程序
01. COORD結構體
定義控制臺屏幕緩沖區中字符單元格的坐標。坐標系(0,0)的原點位于緩沖區的左上角。
類型聲明
typedef struct _COORD {SHORT X;SHORT Y; } COORD, *PCOORD;說明:
x: 水平坐標或列值。單位取決于函數調用。
y: 垂直坐標或行值。單位取決于函數調用。
02. SMALL_RECT結構
定義矩形的左上角和右下角的坐標。
類型聲明
typedef struct _SMALL_RECT {SHORT Left;SHORT Top;SHORT Right;SHORT Bottom; } SMALL_RECT;說明:
Left: 矩形左上角的x坐標。
Top: 矩形左上角的y坐標。
Right: 矩形右下角的x坐標。
Bottom: 矩形右下角的y坐標。
03. CONSOLE_SCREEN_BUFFER_INFO結構體
包含有關控制臺屏幕緩沖區的信息
類型聲明
typedef struct _CONSOLE_SCREEN_BUFFER_INFO {COORD dwSize;COORD dwCursorPosition;WORD wAttributes;SMALL_RECT srWindow;COORD dwMaximumWindowSize; } CONSOLE_SCREEN_BUFFER_INFO;說明:
dwSize: 包含控制臺屏幕緩沖區的大小,以字符列和行為單位。
dwCursorPosition: 包含控制臺屏幕緩沖區中光標的列和行坐標。
wAttributes: 字符屬性
srWindow: 包含顯示窗口左上角和右下角的控制臺屏幕緩沖區坐標。
dwMaximumWindowSize: 它包含控制臺窗口的最大大小,在字符列和行中,給定當前屏幕緩沖區大小和字體以及屏幕大小。
04. GetConsoleScreenBufferInfo函數
獲取有關指定控制臺屏幕緩沖區的信息。
函數聲明:
BOOL WINAPI GetConsoleScreenBufferInfo(_In_ HANDLE hConsoleOutput,_Out_ PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo );功能:獲取有關指定控制臺屏幕緩沖區的信息。 參數:hConsoleOutput:控制臺屏幕緩沖區的句柄。句柄必須具有GENERIC_READ訪問權限。lpConsoleScreenBufferInfo:指向CONSOLE_SCREEN_BUFFER_INFO結構的指針,該結構接收控制臺屏幕緩沖區信息。返回值:如果函數成功,則返回值為非零值。如果函數失敗,則返回值為零。要獲取擴展錯誤信息,請調用GetLastError。參考網址:https://docs.microsoft.com/en-us/windows/console/getconsolescreenbufferinfo
05. FillConsoleOutputCharacter 函數
從指定的坐標開始,將一個字符寫入控制臺屏幕緩沖區指定的次數。
函數聲明:
BOOL WINAPI FillConsoleOutputCharacter(_In_ HANDLE hConsoleOutput,_In_ TCHAR cCharacter,_In_ DWORD nLength,_In_ COORD dwWriteCoord,_Out_ LPDWORD lpNumberOfCharsWritten ); 參數:hConsoleOutput 控制臺屏幕緩沖區的句柄。句柄必須具有GENERIC_WRITE訪問權限。cCharacter 要寫入控制臺屏幕緩沖區的字符。nLength 應寫入字符的字符單元格數。dwWriteCoord 指定字符坐標到的字符是要被寫入的開始坐標。lpNumberOfCharsWritten 指向變量的指針,該變量接收實際寫入控制臺屏幕緩沖區的字符數。返回值:如果函數成功,則返回值為非零值。如果函數失敗,則返回值為零。要獲取擴展錯誤信息,請調用GetLastError。參考官方網址:https://docs.microsoft.com/en-us/windows/console/fillconsoleoutputcharacter
06. 獲取窗口信息和填充程序
參考代碼:
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<string.h> #include<stdlib.h>#include <Windows.h>int main() {//定義句柄類型的變量HANDLE hOut = NULL;//窗口信息結構體CONSOLE_SCREEN_BUFFER_INFO screenInfo;//開始坐標COORD pos = {0, 0};//獲取標準輸出句柄hOut = GetStdHandle(STD_OUTPUT_HANDLE);//獲取窗口信息結構體GetConsoleScreenBufferInfo(hOut, &screenInfo);//將整個緩沖區填充字符'B'效果FillConsoleOutputCharacter(hOut, 'B', screenInfo.dwSize.X * screenInfo.dwSize.Y, pos, NULL);//關閉句柄CloseHandle(hOut);system("pause");return 0; }執行結果:
總結
以上是生活随笔為你收集整理的【C语言】控制台窗口图形界面编程(二)窗口信息和填充缓冲区的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C语言】控制台窗口图形界面编程(一)句
- 下一篇: 【C语言】控制台窗口图形界面编程(三)窗