当前课程知识点:VC++面向对象与可视化程序设计(上):Windows编程基础 > 第3章 文本与字体 > 3-3 例题和作业 > 3-3-1 (例3-1)
返回《VC++面向对象与可视化程序设计(上):Windows编程基础》慕课在线视频课程列表
返回《VC++面向对象与可视化程序设计(上):Windows编程基础》慕课在线视频列表
下面我们通过一些例子来介绍文本的操作
在用户窗口上输出几行字符串
比如说这里大家看到
second line 等等等等六行
当窗口接收到PAINT消息之后
显示的文本每次都会被重新刷新
刷新成现在的内容
编写这个应用程序遵循的基本构架
跟我们上一讲的例题是完全一样的
所以这个WinMain的话, 显示一下
大家知道跟前面是一样的 就不细说了
消息处理函数WndProc
我们定义了一个DC
然后定义了一个nXChar跟nYChar
这个待会儿大家就知道是什么了
这个TEXTMETRIC是字符集的一些信息
这个short LnCount 大家就看到
我们原来要求的是输出6行的内容
所以这里面就定义了是6个行
那么这个PtStr
是指向包含绘图信息的一个结构体的变量
通过一个指针数组来定义
那么大家知道这个指针数组
没有写明这里指针数组的长度
实际上这个长度根据我们函数的定义 它就是6
我们进入消息处理
我们要创建一个窗口
所以对于程序运行
马上就发生看得见的内容
这些内容都是放到WM_CREATE这个消息里面
所以在WM_CREATE消息里面
我们要获取当前的设备描述表DC
然后我们获取字体的信息
获取当前字符的宽度
这是字符的宽度 这是字符的高度
是原来字符的高度再加上行间距
那么实际上这高度是指下一行位置的高度
所以这样的话这里面实际上是字符输出位置的坐标
这个地方是专门为字符输出的定位服务的
为此我们定义了两个变量
当我们获取了这个字体信息的时候
那么这时候我们DC就可以不要了
关键在DC里面是为了获取字符的信息
那么获取字符信息之后
我们就开始处理PAINT消息
PAINT消息实际上大家知道是开始刷新或者叫绘画
然后我们用BeginPaint获取一个DC
然后, 通过一个for循环
从0到这个6,是吧
x<6,就是5
那么0到5,就是6个
输出文本
在这个DC里面
在这个X坐标和Y坐标的位置上
那么请大家注意
Y坐标是我循环每完成一次
也就是说它输出一行之后
它这个Y,是在原来的基础上再加1
那么这样的话,实际上就到了下一行的输出位置
就输出X个字符串
这个大家回过头看一下
就这6个字符串
然后每一个字符串的长度是多少呢?
用lstrlen
那么这就是TextOut函数里面
要求指定地输出的字符串的字节数
那么通过一个for循环就完成了字符串的输出
输出后,就EndPaint,就结束了
那么这个DESTROY和default跟前面一样
我就不说了
所以实际上
输出这么几个字符串很简单
通过CREATE消息
获得字符的相应的信息
然后,就开始输出字符串
获得属性信息关键的就是
获得这个X、Y的坐标位置 核心问题就在这儿
因为我们已经通过textbuf这个数组
确定了要输出的字符串
strlen这个函数获取字符串的字节数的时候
我们剩下的工作就是确定字符串输出的坐标位置
其他的InitWindowsClass和InitWindows
这个内容和前面讲的构架是完全一样的
这里……的内容实际上是
填写WNDCLASS的数据结构
那么这个例题我们就介绍到这儿
-讨论实录
--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章源代码
--外部链接
-第一次作业
--第一次作业--作业
-第二次作业
--第二次作业--作业
-第三次作业
--第三次作业--作业