日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【C语言】控制台窗口图形界面编程(二)窗口信息和填充缓冲区

發布時間:2024/4/21 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【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语言】控制台窗口图形界面编程(二)窗口信息和填充缓冲区的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。