将控制台窗口分为三部分

分割窗口事实上是通过把输入光标定位到某处,然后使用printf函数输出字符实现的。在程序中,这一功能是由help模块提供,具体由help_init函数提供实现。help模块中的接口使用控制台相关的Windows API(Windows提供的编程接口)来实现定位光标、设置文本颜色功能。这些函数并不属于C运行时库,目前只需要知道其作用就行。

Help.h

注释已经很好的说明了一切。需要注意的是,我们在头文件中只定义了一些常量与接口。上面虽然说这部分代码需要Windows API提供支持,这通常代表需要包含windows.h。但我们并没有,因为这部分是与实现相关的。在头文件中包含太多的头文件,会造成编译时间加长,甚至产生依赖问题。

Help.c

我们包含了Windows.h,同时定义了一个变量hConsole用于保存对控制台窗口的引用。你可能不熟悉HANDLE这个类型,不用多想,认为它同int之类的一样,是一种数据类型即可。代码中也引入了一些Windows Console API,不要纠结于自己不会使用它们。如前篇所言,学到最后,你会明白这很容易。目前只需要把重点放在Help.h提供的接口上。

对于help_init函数,有几点要说明:

控制台窗口左上角的坐标是(0,0),代表第1行第1列。

我们设置了控制台窗口的范围为:80个字符宽 x 40字符高。

从索引(0,20)也就是第1列21行,我们对窗口进行了上下分割

从索引(20,40)第21行41列,我们对下面部分进行了左右分割。

之所以说明这些,是因为后面要将对应的消息输出到正确的位置,需要这些参考信息。

Main.c

有了上面这些辅助函数的帮助,我们只需要简单的调用,便可以得到工作空间。

如果你在Windows 10下运行程序,控制台窗口可能与这里的不一样,这可以通过设置窗口属性来完成。

字体页:我选择的是点阵字体

颜色页:我选择的背景是黑色

选项页:如果有字符乱码的话,可以选中【使用旧版控制台】复选框。

使用Help.h中的其它接口

为了加深对“窗口坐标”的理解,我们决定使用Help.h中光标定位与输出接口,扩展主函数并输出三部分的左上解索引。因为后续的输出需要从这些位置开始。

码字不易,今晚先写到这里,下一篇我们将进入数据组织部分。

c语言编译笑脸,C语言快速入门——笑脸绘图程序:窗口实现相关推荐

  1. python与c语言在语法上的区别-Python与C语言基础对比(Python快速入门)

    代码较长,建议使用电脑阅读本文. 10分钟入门Python 本文中使用的是Python3 如果你曾经学过C语言,阅读此文,相信你能迅速发现这两种语言的异同,达到快速入门的目的.下面将开始介绍它们的异同 ...

  2. python和c语言的对比_Python与C语言基础对比(Python快速入门)

    原博文 2019-07-05 09:23 − > 代码较长,建议使用电脑阅读本文. # 10分钟入门Python `本文中使用的是Python3` 如果你曾经学过C语言,阅读此文,相信你能迅速发 ...

  3. QT Creator快速入门读书笔记:窗口部件初探

    QWidget基础窗口部件 Qt把没有嵌入到其他部件中的部件称为窗口,一般窗口都有边框和标题栏,就像程序中的widget和label一样.QMainWindow和大量的QDialog子类是最一般的窗口 ...

  4. Python与C语言基础对比(Python快速入门)

    [c,c++,c#,java?这些有什么区别?转] c,c++,c#,java?这些有什么区别? C语言: 目前最著名.最有影响.应用最广泛的windows.linux和UNIX三个操作系统都是用C语 ...

  5. c语言stl用法,C STL快速入门!学习使我快乐

    C++ STL中最基本以及最常用的类或容器无非就是以下几个: ▶ string ▶ vector ▶ set ▶ list ▶ map 下面就依次介绍它们,并给出一些最常见的最实用的使用方法,做到快速 ...

  6. 在线进行C语言编译,在线C语言编译及考试系统.doc

    摘要: C语言是一种计算机程序设计语言.它既具有高级语言的特点,又具有汇编语言的特点.它由美国贝尔研究所的D.M.Ritchie于1972年推出.1978后,C语言已先后被移植到大.中.小及微型机上. ...

  7. 2.c语言编译预处理,c语言第03章-编译预处理2.ppt

    c语言第03章-编译预处理2 第3章 编译预处理 编译预处理是指,编译时,首先对编译预处理命令进行处理,然后再将预处理后的中间结果进行编译,以得到目标代码. 教学目的: 掌握#define.#incl ...

  8. 用c语言编译二叉树,C语言 数据结构平衡二叉树实例详解

    数据结构平衡二叉树 参考代码如下: /* 名称:平衡二叉树 语言:数据结构C语言版 编译环境:VC++ 6.0 日期: 2014-3-26 */ #include #include #include ...

  9. Keil MDK 5.30来了,编译性能优化,快速入门Cortex-M55

    关注.星标公众号,不错过精彩内容 素材来源:Arm Keil 编辑整理:strongerHuang 早在ARM推出Cortex-M55内核的时候,就放出来一些关于Keil MDK V5.30的消息:C ...

  10. java安卓开发 快速入门_安卓程序员如何快速入门后端开发常识

    首先,对于安卓开发人员来说,学习一下后端开发知识是有必要的,一方面可以拓展自身的知识面,另一方面也可以推动自己走向全栈程序员发展路线,在云计算时代,全栈程序员的发展空间会更大一些. 相对来说,安卓程序 ...

最新文章

  1. String与StringBuffer 理解
  2. python棋盘最短路径_【leetcode】64. Minimum Path Sum 棋盘最短路径
  3. MySQL 删除视图
  4. 基于visual c++之windows核心编程代码分析(30)Telnet协议编程
  5. 63 SD配置-交货凭证配置-定义交货的项目类别
  6. sc7cb27180 士兰微_供应 SILAN/士兰微 SC7A30E SC7A30 LGA10-3A 加速度计/三轴磁传感器
  7. java 抽象 属性_在java中如何定义一个抽象属性示例详解
  8. 解压并安装protobuf库_golang-leaf服务器-protobuf的安装
  9. webstrom 里面使用github
  10. Java HashSet和LinkedHashSet的用法
  11. 全网疯传的PDF干货合集,50个精选BAT等大厂大数据、算法落地经验,白拿不谢!...
  12. 【spring源码分析】spring中类型转换器详解
  13. 最简单的dubbo教程-快速入门
  14. 3D 空间音效+空气衰减+人声模糊
  15. 管家婆的验证服务器失败,管家婆登陆提示“连接服务器失败”怎么办
  16. 图论(五)单源最短路算法
  17. 撰写科技论文的意义-李正海
  18. 微淼商学院php面试_微淼商学院校友故事:培养财商,生活会越过越好
  19. 面向交通流预测的时空融合图神经网络
  20. 乐鲜生活后台管理系统--项目总结

热门文章

  1. c语言计算个人成绩平均分,C语言 | 计算总平均分及第n个人的成绩
  2. canvas教程6-绘制圆弧
  3. 实现简单的轮播图(单张图片、多张图片)
  4. 互联网评论(一):由“戴尔用博客与中国用户沟通”想起
  5. 【其他】kindle电子书脱壳转换格式
  6. 使用auto.js模拟手动点击芭芭农场任务(芭芭农场自动脚本2022.8.1更新)
  7. html给页面添加艺术型边框,如何为2016word的页面设置艺术型页面边框
  8. C# 如何在Word文档中插入艺术字
  9. android平板改成电视盒子,【当贝市场】废旧手机改造成电视盒子详细教程
  10. 启用计算机来宾账号,开启Windows 10来宾账户