当前课程知识点:VC++面向对象与可视化程序设计(上):Windows编程基础 >  第4章 Windows应用程序中的键盘与鼠标 >  4-3 例题 >  4-3

返回《VC++面向对象与可视化程序设计(上):Windows编程基础》慕课在线视频课程列表

4-3在线视频

4-3

下一节:4-3

返回《VC++面向对象与可视化程序设计(上):Windows编程基础》慕课在线视频列表

4-3课程教案、知识点、字幕

下面我们通过一个例子给大家介绍下

鼠标应用程序实例

我们看一下这么一个例子

这个例子是要求我们在界面上

分隔为不同的区域

在每一个区域里面显示不同光标的样式

为了容易识别

我们就给他画了几个框在这里面

大家看在这框里面

小矩形框里面

鼠标显示的风格是不一样的

同时这里有一个数据

显示当前鼠标在界面中所处的坐标位置

那么我们运行一下这个程序

那么大家看在这个区域

鼠标是十字

这个是十字箭头的

这个呢是问号的

这个呢是斜向的箭头

这个是纵向箭头

这也是斜向箭头

这个左斜键和右斜键

这是横向的

这是竖向箭头

这是等待光标

那么在这里大家呢可以看到

随着我光标的移动

左上角的数值一直在变化

实际上,它是在显示我当前光标的位置信息

好!我们就看一下它运行的情况

然后,我们来编写这个应用程序

看看如何实现这个功能

好!那么下面,我们就打开我们这个代码

来给大家介绍应用程序的创建过程

跟前面的例子一样

基本构架的内容,我们不讲了

我们主要介绍的是这个窗口处理函数

那么在这里边我们定义了

仍然定义了PAINTSTRUCT

定义了一个DC

定义了一个字体的信息参数

因为我们要显示鼠标的位置

鼠标的光标位置

那么就有一个位置信息

位置信息里面

我们就牵扯到这个信息的显示

我们要有相应的文字来显示

那么这里是画刷 画笔

好这里定义了一个光标

这个Str[15]是什么东西呢

实际上就是左上角大家看到的显示的那个光标位置

光标位置,实际上我们获取了它的位置信息后

给它放在一个字符串里面

然后显示的时候

显示的是字符串

所以字符串的长度定义为15

就是x坐标y坐标的最后合成的字符串

那么这个就是坐标信息了

好了那么我们实际上大家刚才从演示的样例情况来看

我光标实际上是在移动

而并没有点击到某一个区域

只是在不同区域上划来划去移动

所以我们相应的是WM_MOUSEMOVE这个消息

WM_MOUSEMOVE消息,我们说

第一这个长字参数的低字节是x坐标

长字参数的高字节是y坐标

那我们很容易获得x坐标和y坐标

就是鼠标移动过程中

x坐标和y坐标我们很容易获得

那么剩下工作就是什么呢?

就是说我们在哪一个区域

我们在哪一个区域显示什么样的光标

我们就是这个区域

我们设的就是50到350

y的话呢也是50到350

那么这个呢50到350这么个大区域

好!那么就是从这个地方到这个地方

就是50到350

实际上呢这个50这个到150这个250这个350

y方向也是 50、150、250、350

那么形成这么一个区域

那么这样一讲,大家就知道这个区域的

坐标分块是怎么样的

好!那么分块怎么样就知道了

那么这x就是给它分在这个50到350之内

y呢也是在50到350之内

那么也就是说如果鼠标x、y是落在这个区域

然后我们再细分

细分就是说如果x在50和150之间

y也是在50和150之间

那么这时候我们定义为十字型光标

我们加载这个光标

然后我们就把它设置为当前光标

如果是150到250

x在150到250之间

y还是50到150

那么实际上呢就移到了第二个区域

就是大家看到的这个区域

这个区域里面

那么我们就给它定义为带东西南北箭头的十字光标

那么这就是大家看到的十字光标

那么这个光标叫IDC_SIZEALL

同样给它加载

那么实际上

只是大家把这个坐标分块算清楚

在每一个区域中设置一个光标就可以了

这个例题就很容易做出来

那么大家要注意有一个地方给大家提醒一下

比如说我们这里分的是x从50到150

那么x50是大于等于

这个150是小于

那么这个时候等于在哪

等于在下一条这个地方

那么也就是说大家看到方格线撞到方格线上

就是鼠标的位置停留在方格线上的时候

比如说停留在150这个方格线上

那么应该呢从这个代码就可以看到

它这时候光标已经变成东西南北十字光标了

这个大家去体会一下

所以如果你这里x小于150变成小于等于150

那么这里x又大于等于150

那么这个时候就会产生一个什么呢

就是x等于150的状态

到底是十字光标还是十字箭头光标的问题

所以这个地方大家一定要分列好

不要重复设置

那么这个分区块设置的光标呢我就不细说了

就实际上代码都一样

只是把分区块的块分清楚

那么重点提示的是不要在分隔线上把东西摞在一起

就可以了

好了!那么刚刚大家看到了就是说

我们要求的是x和y落在指定区域

那么指定区域之外显示的是什么呢

那就是else这个地方

else这个地方呢就是说

我们这个IDC_ARROW

这是大家都很熟悉的

就是你们现在看到的箭头

现在看到的箭头就是IDC_ARROW

那么其他区域,就是我们指定的刚才那个区域之外

变成了一个普通的箭头光标

好了我们现在就是说把光标设置好之后

我们前面只是设置了光标

然后我们要创建一个DC

GetTextMetric这个文本信息大家都很熟悉了

那么背景刷是白色的刷子

那么大家如果有兴趣你给它改成黑色刷子或其他刷子

看看程序运行的时候背景变成啥样

然后,我们把这个刷子载入当前的设备环境

同时我们定义了一个黑的笔

那么大家想如果这时候我背景刷是黑色的

你再设置一个黑色笔的话你会看到什么呢?

一片黑什么都看不到

因为背景和前景撞色了

但撞色并不等于不画

只是画的你看不见分不开

然后我们把黑的笔选入当前设备环境

然后我们定义了一个矩形区域

这个区域是5,5点开始的

然后字符的宽度跟字符高度我们给定义了

那这个地方做什么用呢?

实际上在这个区域里面

就是刚才运行程序的时候

好!就是刚才运行程序这里有一个

底面有一个框

这个框实际上就是我们设置的显示文本的框

好了那这个框里面我们输出了x、y的坐标

输到哪里去呢?

输到这个字符串里面去了

然后通过TextOut在DC里面输出这个字符串的内容

这个前边定义了一个长度为15的字符数组

是用来保存x、y坐标值的

而且x、y坐标值呢是整型数逗号整型数

后面这个是截止符

这个是字符串的截止符啦

这个\0

那么这个时候大家看呢是x逗号y这么一个格式

所以这个时候大家看到的就是坐标有一个

两个值之间有一个逗号

就是x坐标逗号y坐标这么一个格式

是从这里实现的

因为这里格式串里面有一个逗号

然后把x、y坐标保存到字符串里面去

输出字符串

所以这时候大家看到的是坐标的位置消息

然后就是EndPaint就结束了

前边就关于鼠标移动的问题就结束了

鼠标移动问题结束了实际上我们看到应用程序里面

还有一个矩形区域的框

那么实际上这个矩形区域的框是画出来的

刚才分的50、150、250、350这么一个框

坐标框

那么这个是画出来的

既然是画出来的

我们就要响应WM_PAINT消息

那么刚才程序运行过程中看到鼠标在不同的区域呢

是有一根线画成的框

那么我们刚才在运行程序的过程中

看到鼠标在不同的区域显示不同的样式

那么这个不同的区域

是用线给它分成不同区域的

那么我们就要划线

划线就要响应WM_PAINT消息 开始画

所以我们老规矩创建一个DC

然后呢把这个黑的笔选入当前的设备环境

我们创建的那个选择这个黑的笔

然后把这个黑的笔选入当前设备环境

先画一个矩形区域

50、50、350、350

这不是一个外框

一个矩形

然后里面的几条线实际上就是两横两竖

一个外边的矩形框加里头的两横两竖

就构成了我们的不同区域的分隔线

好了!那其他的就没什么问题了

那么我们这个例子就介绍到这

VC++面向对象与可视化程序设计(上):Windows编程基础课程列表:

第0章 课前讨论

-讨论实录

--0-0

第1章 Windows应用程序基础

-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

第2章 Windows的图形设备接口及Windows绘图

-02-1 Windows图形设备接口

--02-1-1 GDI

--02-1-2 图形刷新

--02-1-3 获得设备环境方法

--02-1-4 映像模式

-02-2 绘图工具与颜色

--02-2-1 画笔

--02-2-2 画刷和颜色

-02-3 常用绘图函数

--02-3 常用绘图函数

-02-4 例题和作业

--02-4-1 例题1

--02-4-2 例题2

--02-4-3 例题3

--02-4-4 例题4

--02-4-5 作业

-第2章源代码

--外部链接

--外部链接

第3章 文本与字体

-3-1 设置文本的设备环境

--3-1 设置文本的设备环境

-3-2 文本的输出过程

--3-2 文本的输出过程

-3-3 例题和作业

--3-3-1 (例3-1)

--3-3-2 (例3-2)

--3-3-3 (例3-3)

--3-3-4 (例3-4)

--3-3-5 (作业)

-第3章源代码

--外部链接

第4章 Windows应用程序中的键盘与鼠标

-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章 资源在Windows编程中的应用

-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章源代码

--外部链接

-第一次作业

--第一次作业--作业

-第二次作业

--第二次作业--作业

-第三次作业

--第三次作业--作业

4-3笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。