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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

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

發(fā)布時間:2024/4/21 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【C语言】控制台窗口图形界面编程(二)窗口信息和填充缓冲区 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

00. 目錄

文章目錄

    • 00. 目錄
    • 01. COORD結(jié)構(gòu)體
    • 02. SMALL_RECT結(jié)構(gòu)
    • 03. CONSOLE_SCREEN_BUFFER_INFO結(jié)構(gòu)體
    • 04. GetConsoleScreenBufferInfo函數(shù)
    • 05. FillConsoleOutputCharacter 函數(shù)
    • 06. 獲取窗口信息和填充程序

01. COORD結(jié)構(gòu)體

定義控制臺屏幕緩沖區(qū)中字符單元格的坐標。坐標系(0,0)的原點位于緩沖區(qū)的左上角。

類型聲明

typedef struct _COORD {SHORT X;SHORT Y; } COORD, *PCOORD;

說明:

x: 水平坐標或列值。單位取決于函數(shù)調(diào)用。

y: 垂直坐標或行值。單位取決于函數(shù)調(diào)用。

02. SMALL_RECT結(jié)構(gòu)

定義矩形的左上角和右下角的坐標。

類型聲明

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結(jié)構(gòu)體

包含有關(guān)控制臺屏幕緩沖區(qū)的信息

類型聲明

typedef struct _CONSOLE_SCREEN_BUFFER_INFO {COORD dwSize;COORD dwCursorPosition;WORD wAttributes;SMALL_RECT srWindow;COORD dwMaximumWindowSize; } CONSOLE_SCREEN_BUFFER_INFO;

說明:

dwSize: 包含控制臺屏幕緩沖區(qū)的大小,以字符列和行為單位。

dwCursorPosition: 包含控制臺屏幕緩沖區(qū)中光標的列和行坐標。

wAttributes: 字符屬性

srWindow: 包含顯示窗口左上角和右下角的控制臺屏幕緩沖區(qū)坐標。

dwMaximumWindowSize: 它包含控制臺窗口的最大大小,在字符列和行中,給定當前屏幕緩沖區(qū)大小和字體以及屏幕大小。

04. GetConsoleScreenBufferInfo函數(shù)

獲取有關(guān)指定控制臺屏幕緩沖區(qū)的信息。

函數(shù)聲明:

BOOL WINAPI GetConsoleScreenBufferInfo(_In_ HANDLE hConsoleOutput,_Out_ PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo );功能:獲取有關(guān)指定控制臺屏幕緩沖區(qū)的信息。 參數(shù):hConsoleOutput:控制臺屏幕緩沖區(qū)的句柄。句柄必須具有GENERIC_READ訪問權(quán)限。lpConsoleScreenBufferInfo:指向CONSOLE_SCREEN_BUFFER_INFO結(jié)構(gòu)的指針,該結(jié)構(gòu)接收控制臺屏幕緩沖區(qū)信息。返回值:如果函數(shù)成功,則返回值為非零值。如果函數(shù)失敗,則返回值為零。要獲取擴展錯誤信息,請調(diào)用GetLastError。

參考網(wǎng)址:https://docs.microsoft.com/en-us/windows/console/getconsolescreenbufferinfo

05. FillConsoleOutputCharacter 函數(shù)

從指定的坐標開始,將一個字符寫入控制臺屏幕緩沖區(qū)指定的次數(shù)。

函數(shù)聲明:

BOOL WINAPI FillConsoleOutputCharacter(_In_ HANDLE hConsoleOutput,_In_ TCHAR cCharacter,_In_ DWORD nLength,_In_ COORD dwWriteCoord,_Out_ LPDWORD lpNumberOfCharsWritten ); 參數(shù):hConsoleOutput 控制臺屏幕緩沖區(qū)的句柄。句柄必須具有GENERIC_WRITE訪問權(quán)限。cCharacter 要寫入控制臺屏幕緩沖區(qū)的字符。nLength 應(yīng)寫入字符的字符單元格數(shù)。dwWriteCoord 指定字符坐標到的字符是要被寫入的開始坐標。lpNumberOfCharsWritten 指向變量的指針,該變量接收實際寫入控制臺屏幕緩沖區(qū)的字符數(shù)。返回值:如果函數(shù)成功,則返回值為非零值。如果函數(shù)失敗,則返回值為零。要獲取擴展錯誤信息,請調(diào)用GetLastError。

參考官方網(wǎng)址: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;//窗口信息結(jié)構(gòu)體CONSOLE_SCREEN_BUFFER_INFO screenInfo;//開始坐標COORD pos = {0, 0};//獲取標準輸出句柄hOut = GetStdHandle(STD_OUTPUT_HANDLE);//獲取窗口信息結(jié)構(gòu)體GetConsoleScreenBufferInfo(hOut, &screenInfo);//將整個緩沖區(qū)填充字符'B'效果FillConsoleOutputCharacter(hOut, 'B', screenInfo.dwSize.X * screenInfo.dwSize.Y, pos, NULL);//關(guān)閉句柄CloseHandle(hOut);system("pause");return 0; }

執(zhí)行結(jié)果:

總結(jié)

以上是生活随笔為你收集整理的【C语言】控制台窗口图形界面编程(二)窗口信息和填充缓冲区的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。