当前课程知识点:VC++面向对象与可视化程序设计(上):Windows编程基础 > 第3章 文本与字体 > 3-3 例题和作业 > 3-3-4 (例3-4)
返回《VC++面向对象与可视化程序设计(上):Windows编程基础》慕课在线视频课程列表
返回《VC++面向对象与可视化程序设计(上):Windows编程基础》慕课在线视频列表
在了解了动画文字的显示这个基础上
我们再通过一个例子来看看文字的输出
我们看这首古诗
文字是竖版排版
而且是从右到左
那么如何按照古诗的原貌
我们进行文字的旋转排版
那么我们通过这个例子
来看看这个是怎么实现的
这个代码里面
这个InitWindowsClass
InitWindows这些我们都不再讲了
大家可以看我们在教学网站上面的源代码
我们重点讲一下WndProc
为了大家方便地识别这些代码
我人为地加了这些行号
再次提醒大家
我们的程序里面不允许加行号
我想大家这时候一看
nXChar、nYChar
大家应该很熟悉了
就是输出字符的坐标位置
我们看一下TEXTMETRICS
一样的
这个设备环境句柄一样的
这个PAINTSTRUCT这些都没什么问题
那么我们输出的这个古诗
实际上是四行
四行的话
我们还是按标准的四行
给它定义了一个指针数组
实际上这里面包含有四个字符串数据类型的指针
分别指向每一行的古诗的首地址
然后,我们进入消息循环
在CREATE里面
我们要获得DC
获得字体的信息
nXChar和nYChar分别是字符的宽度和高度
那么这个nCaps是什么?
是字间距
我们获取了这些字符信息之后
我们CREATE消息就完成了
那么大家知道CREATE消息是什么时候响应的
这个我再次给大家提醒一下
程序一运行
它自动地执行CREATE消息
所以你要想程序一运行
自动执行的内容
全部放到CREATE消息里面
它马上就执行
所以这个是缺省的
那么PAINT的话
是刷新后的请求
在这里面,我们获得DC
然后这个i跟j在这里面的话,实际上是循环因子
那么这个大家一看就知道是输出四行的古诗
也就是说我们从第四行开始输
第四行是什么
唯见长江天际流
第四行开始输
j的话,0到7
就是这里不是7个文字吗
0到7
然后分别计算出X的位置
那么X的位置是什么?
就是它输出的位置
Y位置也是输出的Y坐标的位置
那么这样的话我们就把X、Y坐标位置算出来后
输出这个古诗一行一行的内容
那么这时候大家看到了我这里是
这个循环是从4到0
那么这里是4-i
那么这里textbuf刚开始
当j开始执行的时候
这个i的话,是4减去4
是0
那么输出的话,是故人西辞黄鹤楼
输出之后的话,我们大家看到
这个for循环它负责的是到这里为止
那也就是说它输出的时候
对于这个for循环
它i的值是不变的
那么也就是说在内层循环里面
i的值没有变
也就是pointx值没有变
只是pointy的值变了
就是Y的值变了
那么刚开始
这个X的值是什么呢?
我们输出的是这个4-i
那么4-i那这个textbuf是0
这个下标是0
就是这个故人西辞黄鹤楼
x和y一直变化
那么就这么输出来了
输出来之后
那么i的值又变化了
i的值因为减减
那么变成3
那么4减3就变成1
1的话,输出就是
烟花三月下扬州
那么这个时候大家看到
随着i的值变化
这个x的值又变化一次
变化完了进入了j循环的时候
变化完只要i的值变成3后
这里一直是3
就完全j 0到6的循环
又计算了第二行输出的每一个文字的y坐标
那这样又实现了竖向输出
用这种方式
就可以把完整地把这个古诗按老祖宗的规矩
从右到左
从上到下
进行完整的输出
-讨论实录
--0-0
-1-1 Windows应用程序的特点
--1-1
-1-2 可视化编程
--1-2
-1-3 关于API
--1-3-1
--1-3-2
-1-4 Windows应用程序组成及编程步骤
--1-4-1
--1-4-2
-1-5 应用程序举例
--1-5-1
--1-5-2
--1-5-3
-02-1 Windows图形设备接口
-02-2 绘图工具与颜色
-02-3 常用绘图函数
-02-4 例题和作业
-第2章源代码
--外部链接
--外部链接
-3-1 设置文本的设备环境
-3-2 文本的输出过程
-3-3 例题和作业
-第3章源代码
--外部链接
-4-1 Windows 应用程序中的键盘与鼠标
--4-1
-4-2 键盘的操作应用举例
--4-2
-4-3 例题
--4-3
-4-3 鼠标在应用程序中的应用
--4-3
-4-4 例题4-4
--4-4
-第4章源代码
--外部链接
-5-1 菜单和加速键资源及其应用
--5-1
-5-1(例1)
--5-1(例1)
-5-2 位图资源及其应用
--5-2
-5-3 对话框资源及其应用
--5-3-1
--5-3-2
-5-4 图标资源的应用
--5-4
-第5章源代码
--外部链接
-第一次作业
--第一次作业--作业
-第二次作业
--第二次作业--作业
-第三次作业
--第三次作业--作业