将控制台窗口分为三部分

分割窗口事实上是通过把输入光标定位到某处,然后使用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. 如何用html语言定位img,html经常使用标签(图像标签img,连接标签a,锚点定位,及路径)...
  2. NYOJ 30 Gone Fishing JAVA+解析
  3. OSChina 周四乱弹 —— 春天在哪里,春天在哪里?
  4. C语言-程序运行效率总结及注意事项
  5. 嵌入式Linux之我行——ARM MMU工作原理剖析
  6. Java实现定时调度的三种方法
  7. NAS——在VMware 15虚拟机中安装黑群晖DSM解决方案
  8. linux环境中,top命令中,对command的命令进行扩展查看详情?
  9. Burrow 服务的安装部署
  10. csp2020 j2民间数据下载_摊开母婴市场数据集看一看
  11. 扇贝有道180914每日一句
  12. [转]Spring 注解总结
  13. Spring Cloud入门教程(三):声明式服务调用(Feign)
  14. L1-064 估值一亿的AI核心代码 (20 分)
  15. 毕业好几年,改行学IT哪个岗位容易上手?
  16. 台式计算机显卡驱动位置,台式电脑独立显卡怎么安装驱动的
  17. 青龙面板快s极速版(本地)
  18. 顺序表与链表结构及解析
  19. atoi和itoa的模拟实现
  20. 2019年,SEO关键词KPI考核指标有哪些?

热门文章

  1. 产品经理,该如何做好「自己」这款产品?
  2. wp8.1 java_UWP tips (与wp8.1的不同)
  3. linux 文件转换ascii,关于linux:如何将文件从ASCII转换为UTF-8?
  4. Python 100道基础入门练习题(附答案)【这期完结】
  5. 选购发烧游戏台式计算机的内存储器,游戏发烧友福音 惠普暗影精灵5 Super游戏台式电脑评测...
  6. C语言编程核心要点,男人看了沉默,女人看了流泪
  7. 2022年一级建造师考试《市政公用工程》练习题及答案(多选题)
  8. iOS接入招商银行一网通
  9. android音乐播放器实验报告总结,音乐播放器设计实验报告.docx
  10. Arcgis中topolopy(摘自网络)