【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语言控制台窗口图形界面编程(五). -电脑资料
控制文本的移动是控制台窗口界面编程的一个很重要的功能,有了这个功能我们可以实现界面的滚动, BOOL ScrollConsoleScreenBuffer( //文本移动函数 HANDLE h ...
- c++mfc编写实验_零基础学Windows窗口图形界面编程(不用MFC),菜鸟学完变身高手,敢与专业媲美...
又一门新的计算机课上线啦! 什么课?看下面视频(以下视频是本课第一讲) 用什么语言 我们声明一下(这个在我们课上也跟同学强调):不要为用什么语言掐架!那是初学者的行为,为高手所不为. 第二,我们这门课 ...
- C语言控制台窗口图形界面编程
一:设置句柄与窗口信息 在Windows操作系统下用C语言编写控制台的窗口界面首先要获取当前标准输入和标准输出设备的句柄.通过调用函数GetStdHandle可以获取当前标准输入以及输出设备的句柄.函 ...
- 【C语言】控制台窗口图形界面编程(一)句柄和文本属性
00. 目录 文章目录 00. 目录 01. 句柄 02. GetStdHandle函数 03. CloseHandle函数 04. SetConsoleTextAttribute函数 05. 十进制 ...
- C语言控制台窗口图形界面编程(五).
控制文本的移动是控制台窗口界面编程的一个很重要的功能,有了这个功能我们可以实现界面的滚动.下面我们介绍一个控制文本移动的函数,如下: BOOL ScrollConsoleScreenBuffer( ...
- 【C语言】控制台窗口图形界面编程(五):文本移动
00. 目录 文章目录 00. 目录 01. CHAR_INFO结构 02. ScrollConsoleScreenBuffer函数 03. 程序示例 04. 官方参考程序 01. CHAR_INFO ...
- 【C语言】控制台窗口图形界面编程(四):文本输出
00. 目录 文章目录 00. 目录 01. FillConsoleOutputAttribute函数 02. FillConsoleOutputCharacter函数 03. WriteConsol ...
- 【C语言】控制台窗口图形界面编程(三)窗口相关设置
00. 目录 文章目录 00. 目录 01. GetConsoleTitle函数 02. SetConsoleTitle函数 03. SetConsoleScreenBufferSize函数 04. ...
- 【C语言】控制台窗口图形界面编程(八):键盘事件
00. 目录 文章目录 00. 目录 01. INPUT_RECORD结构 02. KEY_EVENT_RECORD结构 03. ReadConsoleInput函数 04. 示例程序 01. INP ...
最新文章
- Linux之 手动释放内存
- response.getWriter().write 传递中文乱码
- sql优化ppt_Spark优化 | Spark 3.0 中七个必须知道的 SQL 性能优化
- 重构机房收费系统你要用的——异常处理和抛出异常(try catch finally)——(vb.net)...
- [Apple开发者帐户帮助]二、管理你的团队(6)找到您的团队ID
- Shell程序设计 | 文本处理工具 :正则表达式、grep、sed、awk
- 运行shell脚本报错:“syntax error near unexpected token fi 的解决方法
- maven 强制更新_maven入坑指南
- window.createPopup()用法以及短消息提示框代码
- GD32 MCU USB开发学习记录
- Win10 1903:美化鼠标指针
- 你都用 Python 来做什么?
- 什么是CSS hack及写法
- python三维图旋转_python中的三维图像旋转
- 学生奖学金评定系统c语言,学生奖学金评定系统.doc
- 保罗.沃尔克:世界经济“有控制地解体”
- Docker - debian 7 安装
- 张亚勤、刘慈欣、周鸿祎、王飞跃新书推荐,《崛起的超级智能:互联网大脑如何影响科技未来》...
- 【数据分析师_04_Python数据分析基础】006_Pandas时序分析(df.tz_localize 时区位置、df.tz_convert 时区转换)
- google 的高级搜索
热门文章
- iPhone 越狱开发相关
- Orchard源码分析(4):Orchard.Environment.OrchardStarter类
- Silverlight3 Tools Download link
- 设计一个简单的缓存容器
- linux动态路由rip配置,配置 动态路由协议OSPF和RIPv2实现全网互通^
- css不常用,不常用的 CSS
- Java黑皮书课后题第5章:*5.16(找出一个整数的因子)编写程序,读入一个整数,然后以升序显示它的所有最小因子。例如,若输入的整数是120,那么输出就应该是:2、2、2、3、5
- Java黑皮书课后题第4章:4.19(商业:检测ISBN-10)改写编程练习题3.9,将ISBN号作为一个字符串输入
- 程序员面试100题之十:快速寻找满足条件的两个数
- 维护索引——通过重组索引提高性能