c语言编译笑脸,C语言快速入门——笑脸绘图程序:窗口实现
将控制台窗口分为三部分
分割窗口事实上是通过把输入光标定位到某处,然后使用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语言快速入门——笑脸绘图程序:窗口实现相关推荐
- python与c语言在语法上的区别-Python与C语言基础对比(Python快速入门)
代码较长,建议使用电脑阅读本文. 10分钟入门Python 本文中使用的是Python3 如果你曾经学过C语言,阅读此文,相信你能迅速发现这两种语言的异同,达到快速入门的目的.下面将开始介绍它们的异同 ...
- python和c语言的对比_Python与C语言基础对比(Python快速入门)
原博文 2019-07-05 09:23 − > 代码较长,建议使用电脑阅读本文. # 10分钟入门Python `本文中使用的是Python3` 如果你曾经学过C语言,阅读此文,相信你能迅速发 ...
- QT Creator快速入门读书笔记:窗口部件初探
QWidget基础窗口部件 Qt把没有嵌入到其他部件中的部件称为窗口,一般窗口都有边框和标题栏,就像程序中的widget和label一样.QMainWindow和大量的QDialog子类是最一般的窗口 ...
- Python与C语言基础对比(Python快速入门)
[c,c++,c#,java?这些有什么区别?转] c,c++,c#,java?这些有什么区别? C语言: 目前最著名.最有影响.应用最广泛的windows.linux和UNIX三个操作系统都是用C语 ...
- c语言stl用法,C STL快速入门!学习使我快乐
C++ STL中最基本以及最常用的类或容器无非就是以下几个: ▶ string ▶ vector ▶ set ▶ list ▶ map 下面就依次介绍它们,并给出一些最常见的最实用的使用方法,做到快速 ...
- 在线进行C语言编译,在线C语言编译及考试系统.doc
摘要: C语言是一种计算机程序设计语言.它既具有高级语言的特点,又具有汇编语言的特点.它由美国贝尔研究所的D.M.Ritchie于1972年推出.1978后,C语言已先后被移植到大.中.小及微型机上. ...
- 2.c语言编译预处理,c语言第03章-编译预处理2.ppt
c语言第03章-编译预处理2 第3章 编译预处理 编译预处理是指,编译时,首先对编译预处理命令进行处理,然后再将预处理后的中间结果进行编译,以得到目标代码. 教学目的: 掌握#define.#incl ...
- 用c语言编译二叉树,C语言 数据结构平衡二叉树实例详解
数据结构平衡二叉树 参考代码如下: /* 名称:平衡二叉树 语言:数据结构C语言版 编译环境:VC++ 6.0 日期: 2014-3-26 */ #include #include #include ...
- Keil MDK 5.30来了,编译性能优化,快速入门Cortex-M55
关注.星标公众号,不错过精彩内容 素材来源:Arm Keil 编辑整理:strongerHuang 早在ARM推出Cortex-M55内核的时候,就放出来一些关于Keil MDK V5.30的消息:C ...
- java安卓开发 快速入门_安卓程序员如何快速入门后端开发常识
首先,对于安卓开发人员来说,学习一下后端开发知识是有必要的,一方面可以拓展自身的知识面,另一方面也可以推动自己走向全栈程序员发展路线,在云计算时代,全栈程序员的发展空间会更大一些. 相对来说,安卓程序 ...
最新文章
- 如何用html语言定位img,html经常使用标签(图像标签img,连接标签a,锚点定位,及路径)...
- NYOJ 30 Gone Fishing JAVA+解析
- OSChina 周四乱弹 —— 春天在哪里,春天在哪里?
- C语言-程序运行效率总结及注意事项
- 嵌入式Linux之我行——ARM MMU工作原理剖析
- Java实现定时调度的三种方法
- NAS——在VMware 15虚拟机中安装黑群晖DSM解决方案
- linux环境中,top命令中,对command的命令进行扩展查看详情?
- Burrow 服务的安装部署
- csp2020 j2民间数据下载_摊开母婴市场数据集看一看
- 扇贝有道180914每日一句
- [转]Spring 注解总结
- Spring Cloud入门教程(三):声明式服务调用(Feign)
- L1-064 估值一亿的AI核心代码 (20 分)
- 毕业好几年,改行学IT哪个岗位容易上手?
- 台式计算机显卡驱动位置,台式电脑独立显卡怎么安装驱动的
- 青龙面板快s极速版(本地)
- 顺序表与链表结构及解析
- atoi和itoa的模拟实现
- 2019年,SEO关键词KPI考核指标有哪些?
热门文章
- 产品经理,该如何做好「自己」这款产品?
- wp8.1 java_UWP tips (与wp8.1的不同)
- linux 文件转换ascii,关于linux:如何将文件从ASCII转换为UTF-8?
- Python 100道基础入门练习题(附答案)【这期完结】
- 选购发烧游戏台式计算机的内存储器,游戏发烧友福音 惠普暗影精灵5 Super游戏台式电脑评测...
- C语言编程核心要点,男人看了沉默,女人看了流泪
- 2022年一级建造师考试《市政公用工程》练习题及答案(多选题)
- iOS接入招商银行一网通
- android音乐播放器实验报告总结,音乐播放器设计实验报告.docx
- Arcgis中topolopy(摘自网络)