VC++ 控制台程序常用接口

2023-10-27

1、申请一个控制台窗口,如果程序本身是控制台程序,可以不用调用

AllocConsole()

2、获取控制台屏幕缓冲区的句柄

HANDLE m_hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

3、设置控制台标题

SetConsoleTitle(_T("控制台标题"));

4、获取控制台标题

char szConsoleTitle[_MAX_PATH] = { 0 };
GetConsoleTitle(szConsoleTitle, _MAX_PATH);

5、设置光标位置

BOOL SetConsoleCursorPosition(_In_ HANDLE hConsoleOutput,  _In_ COORD dwCursorPosition);

6、在当前光标位置写入内容

WriteConsole(m_hConsole, lpString, _tcslen(lpString), &dwWritten, NULL);

7、在制定光标位置写入内容

BOOL WriteConsoleOutputCharacter(
    _In_ HANDLE hConsoleOutput,                  // 控制台屏幕缓冲区的句柄
    _In_reads_(nLength) LPCSTR lpCharacter,//要向控制台屏幕缓冲区写入的字符
    _In_ DWORD nLength,                               //应写入的字符单元数
    _In_ COORD dwWriteCoord,                      //一个 COORD 结构,它指定字符的字符是要写的第一个单元格的坐标
    _Out_ LPDWORD lpNumberOfCharsWritten//指向接收的实际写入控制台屏幕缓冲区的字符数的变量的指针
    );

8、设置光标位置

BOOL SetConsoleCursorPosition(_In_ HANDLE hConsoleOutput, _In_ COORD dwCursorPosition);

9、获取屏幕缓存区信息

BOOL GetConsoleScreenBufferInfo(
    _In_ HANDLE hConsoleOutput,
    _Out_ PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo 
    );

// 控制台窗口信息结构体
typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
    COORD dwSize; // 缓冲区大小
    COORD dwCursorPosition; // 当前光标位置
    WORD wAttributes; // 字符属性(颜色)
    SMALL_RECT srWindow; // 当前窗口显示的大小和位置
    COORD dwMaximumWindowSize; // 最大的窗口缓冲区大小
} CONSOLE_SCREEN_BUFFER_INFO ;

10、设置窗口位置和大小

BOOL SetConsoleWindowInfo(
    _In_ HANDLE hConsoleOutput,
    _In_ BOOL bAbsolute, // 绝对位置还是相对位置,一般设定为TRUE
    _In_ CONST SMALL_RECT* lpConsoleWindow
    );

11、向窗口填充内容并清空屏幕

BOOL FillConsoleOutputCharacter(
  __in HANDLE hConsoleOutput, //控制台屏幕缓冲区的句柄
  __in TCHAR cCharacter,            //要向控制台屏幕缓冲区写入的字符
  __in DWORD nLength,               //应写入的字符单元数
  __in COORD dwWriteCoord,      //一个 COORD 结构,它指定字符的字符是要写的第一个单元格的坐标
  __out LPDWORD lpNumberOfCharsWritten//指向接收的实际写入控制台屏幕缓冲区的字符数的变量的指针
  );

12、设置光标信息

BOOL SetConsoleCursorInfo(
    _In_ HANDLE hConsoleOutput,
    _In_ CONST CONSOLE_CURSOR_INFO* lpConsoleCursorInfo
    );

typedef struct _CONSOLE_CURSOR_INFO {
  DWORD dwSize;// 光标百分比大小(1~100) 
  BOOL  bVisible;  // 是否可见
  } CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO;

13、获取光标信息

BOOLGetConsoleCursorInfo(
    _In_ HANDLE hConsoleOutput,
    _Out_ PCONSOLE_CURSOR_INFO lpConsoleCursorInfo
    );

14、文本区滚动和移动,将指定的一块文本区域移动到另一个区域,被移空的那块区域由指定字符填充

BOOL ScrollConsoleScreenBuffer(
  HANDLE hConsoleOutput,                           //控制台屏幕缓冲区的句柄
  CONST SMALL_RECT* lpScrollRectangle, //要滚动或移动的区域
  CONST SMALL_RECT* lpClipRectangle,    //裁剪区域
  COORD dwDestinationOrigin,                      //新的位置
  CONST CHAR_INFO* lpFill                         //填充字符
);

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VC++ 控制台程序常用接口 的相关文章

  • C++ 动态内存

    了解动态内存在 C 中是如何工作的是成为一名合格的 C 程序员必不可少的 C 程序中的内存分为两个部分 栈 在函数内部声明的所有变量都将占用栈内存 堆 这是程序中未使用的内存 在程序运行时可用于动态分配内存 很多时候 您无法提前预知需要多少
  • C++ 常量

    常量是固定值 在程序执行期间不会改变 这些固定的值 又叫做字面量 常量可以是任何的基本数据类型 可分为整型数字 浮点数字 字符 字符串和布尔值 常量就像是常规的变量 只不过常量的值在定义后不能进行修改 整数常量 整数常量可以是十进制 八进制
  • C 标准库 - 《stddef.h》

    原文链接 https www runoob com cprogramming c standard library stddef h html 简介 stddef h 头文件定义了各种变量类型和宏 这些定义中的大部分也出现在其它头文件中 库
  • C 标准库 - 《math.h》

    原文链接 https www runoob com cprogramming c standard library math h html 简介 math h 头文件定义了各种数学函数和一个宏 在这个库中所有可用的功能都带有一个 doubl
  • C++ 数组

    C 支持数组数据结构 它可以存储一个固定大小的相同类型元素的顺序集合 数组是用来存储一系列数据 但它往往被认为是一系列相同类型的变量 数组的声明并不是声明一个个单独的变量 比如 number0 number1 number99 而是声明一个
  • C 标准库 - 《limits.h》

    原文链接 https www runoob com cprogramming c standard library limits h html 简介 limits h 头文件决定了各种变量类型的各种属性 定义在该头文件中的宏限制了各种变量类
  • C 标准库 - 《ctype.h》

    原文链接 https www runoob com cprogramming c standard library ctype h html 简介 C 标准库的 ctype h 头文件提供了一些函数 可用于测试和映射字符 这些函数接受 in
  • C 标准库 - 《signal.h》

    原文链接 https www runoob com cprogramming c standard library signal h html 简介 signal h 头文件定义了一个变量类型 sig atomic t 两个函数调用和一些宏
  • C 标准库 - 《stdio.h》

    原文链接 https www runoob com cprogramming c standard library stdio h html 简介 stdio h 头文件定义了三个变量类型 一些宏和各种函数来执行输入和输出 库变量 下面是头
  • C++ 标准库中数据类型转换

    头文件引用
  • WTL 界面设计篇(CSkinDialog)

    头文件声明 CSkinDialog h pragma once include
  • C++ 日期 & 时间

    C 标准库没有提供所谓的日期类型 C 继承了 C 语言用于日期和时间操作的结构和函数 为了使用日期和时间相关的函数和结构 需要在 C 程序中引用
  • C++ 基本的输入输出

    C 标准库提供了一组丰富的输入 输出功能 我们将在后续的章节进行介绍 本章将讨论 C 编程中最基本和最常见的 I O 操作 C 的 I O 发生在流中 流是字节序列 如果字节流是从设备 如键盘 磁盘驱动器 网络连接等 流向内存 这叫做输入操
  • C 标准库 - 《stdlib.h》

    原文链接 https www runoob com cprogramming c standard library stdlib h html 简介 stdlib h 头文件定义了四个变量类型 一些宏和各种通用工具函数 库变量 下面是头文件
  • C++ 函数

    函数是一组一起执行一个任务的语句 每个 C 程序都至少有一个函数 即主函数 main 所有简单的程序都可以定义其他额外的函数 您可以把代码划分到不同的函数中 如何划分代码到不同的函数中是由您来决定的 但在逻辑上 划分通常是根据每个函数执行一
  • C 基本语法

    原文链接 https www runoob com cprogramming c basic syntax html 我们已经看过 C 程序的基本结构 这将有助于我们理解 C 语言的其他基本的构建块 C 的令牌 Tokens C 程序由各种
  • 主线程消息处理

    写程序过程中 往往会遇到在按钮时间中执行一个循环事件 for while 耗费比较长的时候 这个时候会造成界面的假死想象 对于经常写程序的人来说 解决起来相对比较容易 创建一个子线程 然后把事件放到子线程执行 但是对于初学者而言 创建子线程
  • VC++ CComboBox自绘

    头文件定义 CSWComboBox h pragma once class CSWComboBox public CComboBox DECLARE DYNAMIC CSWComboBox public CSWComboBox CSWCom
  • C/C++ 课题解答(1)

    随机产生100个字符 a z 数组arrayOfChar 输入字符c 计算字符c在数组中出现的次数和位置 include
  • VC++ CComboBox自绘阶段性总结

    在绘制列表框左侧的时候 本来说是采用的CImageList接口进行绘制 结果发现绘制后的图标不干净 有锯齿或者黑色背景存在 于是采用了GDI 来实现左侧图标的绘制 代码如下 GDI是完全可以通过图像处理彻底解决图标不干净问题的 之前文章有介

随机推荐

  • U-Boot 移植

    目录 NXP官方开发板uboot编译测试 查找NXP官方的开发板默认配置文件 defconfig 配置编译NXP官方开发板对应的uboot 烧写验证与驱动测试 定位缺少的驱动 在NXP官方U Boot 中添加自己的开发板 添加开发板默认配置
  • 数据库连接 ORA-12170 TNS connect timeout occurred

    数据库连接出现 ORA 12170 TNS connect timeout occurred这个错误 解决思路 首先连接内网数据库 要排除是不是网络的问题 如果不是网络的问题 再去检查监听是否出现配置错误或其他错误 跟踪路由会有连接超时的现
  • Java中new data()插入数据库---时间相差13h(系统时间是对的,数据库时间也是对的)

    参考了该篇博客 https blog csdn net wo18237095579 article details 90288735 方法 数据库JDBC链接配置加上 serverTimezone GMT 2B8 亲测有效 排查逻辑 1 先
  • java.lang.NumberFormatException 错误及解决办法

    总结几个java lang NumberFormatException 错误及解决办法方法 转载https blog csdn net xiaodongvtion article details 8835668 转载https blog c
  • 【瑞吉外卖day01】

    1 软件开发流程 需求分析 设计 编码 测试 上线运维 软件开发角色分工 软件环境 开发环境 测试环境 生产环境 2 项目技术选型与功能架构 3 数据库环境搭建 Navicat中新建数据库 运行sql 一共建好11张表 4 maven环境搭
  • 解决 vue-cli index.js dev 配置中 assetsPublicPath 的值不能填 "./" 的问题

    问题篇 最近使用frp代理开发微信vue应用 frp代理不直接暴露根目录 因为我的根目录已经被我的博客占用了 所以就使用nginx又代理了一层 访问方式从越来的 wechat youngboy vip 变成 wechat youngboy
  • 【Linux】操作系统&&进程概念

    文章目录 1 冯诺依曼体系结构 2 操作系统 3 进程 进程的基本概念 查看进程和杀死进程 父进程和子进程 通过系统调用创建子进程 1 冯诺依曼体系结构 冯 诺依曼结构也称普林斯顿结构 是一种将程序指令存储器和数据存储器合并在一起的存储器结
  • Java 加解密技术系列之 MD5

    序 上一篇文章中 介绍了最基础的编码方式 BASE64 也简单的提了一下编码的原理 这篇文章继续加解密的系列 当然也是介绍比较基础的加密方式 MD5 MD5 属于单向加密算法 是不可逆的加密方式 也就是说 采用了 MD5 加密方式加密之后
  • 微信内打开链接,跳转到公众号关注页面

    制作一个链接 点击该链接跳转到公众号关注页面 1 从公众平台登进入公众号 2 点击开发 gt gt 开发者工具 3 F12 gt gt Elements 4 ctrl f 搜索 uin base64 5 将下面链接的 biz值更换成uin
  • 全屋WIFI组网方案

    一 AC AP AC 接入控制器 Wireless Accesspoint Controller 可以理解为带POE的路由器 AP 无线接入点 Wireless Access Point 可以理解为信号发射器 光猫接入到AC后 再通过网线接
  • oracle索引的创建

    author skatetime 2009 08 21 为什么要创建索引呢 这是因为 创建索引可以大大提高系统的性能 他都有哪些优点 第一 通过创建唯一性索引 可以保证数据库表中每一行数据的唯一性 第二 可以大大加快 数据的检索速度 这也是
  • 开发经理

    岗位职责 1 负责后端系统设计 开发 发布 维护 2 负责Web和移动产品后端的研发 以及对开发团队的技术管理 3 负责移动项目的架构设计 方案的制定 4 跟进服务端的新技术发展 编写设计开发及实现文档 5 根据产品功能需求设计并完成软件实
  • R语言学习笔记 ④“Error in library(plyr) : 不存在叫‘plyr’这个名字的程辑包” 的解决方案

    在今天课程中 我跟着老师一步步运行代码时出现了错误 Open the CSV File tabledata lt read csv ApplewoodService csv header TRUE sep library plyr 打开文件
  • pip升级报错:def read(rel_path: str) -> str SyntaxError: invalid syntax

    使用命令 pip install U pip 升级pip时报错 报错内容 def read rel path str gt str SyntaxError invalid syntax 报错截图 解决办法 python m pip inst
  • 120个颠覆你认知的gpt使用案例汇总,办公效率提高500%

    文章目录 介绍 1 代码生成 2 代码注释 3 代码解释器 4 充当 Linux 终端 5 代码纠正 6 英语口语练习 7 专业的翻译 8 面试官 9 写任何考科目的作业 10 快速解决学习中的任何问题 11 网站推荐 12 网络工具软件推
  • 最基础的JAVA学习(必学内容)

    以下内容非常丰富 请耐心观看 希望对大家有所帮助 1 java开发工具介绍 java语言是高级的开发语言 那么他用的工具也有高级的开发工具 editplus 高级记事本 专门用来写代码的轻量级的工具 eclipse 专门做程序开发的集成开发
  • 刀片服务器系统安装虚拟化,刀片服务器Vmware虚拟化部署经验分享(初稿)..doc

    WORD文档 专业资料 HP C7000刀片服务器虚拟机部署经验分享 本文主要介绍一台新的 HP C7000刀片服务器从上架加电到进行 虚拟机部署的主要步骤 第一部分 为刀片系统配置远程管理 首先附 C7000刀片服务器各组件示意图一张 注
  • jdbc连接各种数据库的写法

    1 Mysql连接 加载驱动的字符串为 com mysql jdbc Driver URL连接为 jdbc mysql localhost 3306 zzzz 如果是本地的话可以省略数据库服务器地址 jdbc mysql zzzz 后面还可
  • 常用开发框架中的设计模式

    设计模式 常用框架中有哪些设计模式 Spring 工厂设计模式 beanFactory 延迟加载注入 applicationContext 启动服务器即加载进入 单例设计模式 代理设计模式 AOP 基于子类的cglib需要导入第三方的包 j
  • VC++ 控制台程序常用接口

    1 申请一个控制台窗口 如果程序本身是控制台程序 可以不用调用 AllocConsole 2 获取控制台屏幕缓冲区的句柄 HANDLE m hConsole GetStdHandle STD OUTPUT HANDLE 3 设置控制台标题