当前课程知识点:VC++面向对象与可视化程序设计(上):Windows编程基础 > 第1章 Windows应用程序基础 > 1-3 关于API > 1-3-2
返回《VC++面向对象与可视化程序设计(上):Windows编程基础》慕课在线视频课程列表
返回《VC++面向对象与可视化程序设计(上):Windows编程基础》慕课在线视频列表
刚才我们学习了Windows编程过程中的几个主要概念
其中很重要的一个概念是消息
那我们现在重点来介绍几个常用的消息
这个看到的消息是WM作为前缀的
那这个消息就是window消息
Window Message 是吧 窗口消息
其实这个消息很容易识别
大家看到这里LBUTTONDOWN
就是LeftButtonDown 就是鼠标左键消息
它包含了长参数和字参数 lParam跟WParam
我们先看lParam 它的低字节包含了x坐标
就是鼠标的光标点的位置的x坐标
高字节包含了鼠标的y坐标
那么x、y坐标都可以用LOWORD和HIWORD来求出来
它的字参数包含了一个整数值
用来标识鼠标键的按下状态
那么按下状态的话我们通过这个switch-case构架来使用它
比如说这里给出了几个按下状态
MK_LBUTTON MK_MBUTTON RBUTTON 以及SHIFT CONTROL
这个大家都很熟悉
那比如说我们这里看到的WM_LBUTTON case
那么也就是说当按下鼠标左键的时候
我们经常按键会跟shift、ctrl混用
那么这时候我们再判断一下
比如说字参数跟这个shift键相遇
那么也就是说如果按下了shift键
那么这个if的条件就为真
那么这时候大家看是在case LBUTTONDOWN里头的条件判断
也就是说当按下鼠标左键的同时
如果按下了shift键
那么下面这里的…,就说明它进行了相应的操作
所以这里是鼠标左键跟shift键的组合
所以这时候 这里面
就用字参数跟shift键的按下状态进行判断
那么大家刚才看到的是鼠标左键按下的
实际上你既然按下了键 就要放开键
所以LBUTTONUP放开鼠标的左键
以及RBUTTONUP、RBUTTONDOWN
这个是LBUTTONDBLCLK DBLCLK就是Double Click
那么这个就是鼠标左键双击
Right就是鼠标右键双击
还有一个大家知道就是鼠标你不一定按下键
但是鼠标经常在窗口的显示区要移动
从一个位置移动到另一个位置
那么这时候也会产生鼠标的消息
那么就是MOUSEMOVE 就是鼠标移动等等吧
下面我们再介绍一个非系统键
也是WM为前缀 这是窗口消息 KEYDOWN
按下一个非系统键产生的消息
这里一说非系统键
那肯定大家就要想到有没有系统键
你既然有非系统键 那就应该有系统键这个概念
系统键是什么
是指实现系统操作的组合键
比如说Alt键与某个功能键的组合来实现系统菜单操作等等
非系统键就是不与Alt联用的那些键
那么关于系统键、非系统键更详细的内容
这里给出了网址 大家可以参考一下
这个系统键、非系统键
我们仍然可以编写这些按键消息的响应
那么现在对于非系统键来说
它的字参数是包含了键的虚拟码
那什么是“虚拟码”?又多出一个概念
虚拟码是用于标识按下或释放的键
实际上虚拟码代表的是键
lParam是记录了按键的重复次数、扫描码、转移代码、先前键的状态等消息
先前键的状态比如先前是按下的还是放开的
关于虚拟键码详细内容
这里已经给出了MSDN介绍内容的相关网址
大家感兴趣的可以在这个网站上去看一下
关于这些概念不作为我们的重点内容
是只要大家了解就可以
那么既然有KEYDOWN就有KEYUP
就是放开非系统键时产生的消息
那刚才谈到了虚拟码
虚拟码是代表了按下的键
它也有一个标识
大家注意到 这个标识的前缀都是VK 就是Visual Key
就是虚拟键的英文缩写
那么这时候虚拟键LBUTTON就是按下虚拟鼠标左键的虚拟标识键
那么比如说键盘上有shift、ctrl、esc、enter等等
大家看到这些虚拟键 它的特点是什么
就是说如果这些键不设置为虚拟键
大家从键盘上如果单击这些键的操作的时候
不像选择ABCD键或者0-9的字符一样
会在编辑文档或者文档编辑器里面
能够显示相应的内容
而它这些键只是完成相应的操作
那么对于完成相应操作的键
当你需要显示这个键的时候
是无法从键盘上通过敲打这个键
使得相关的编辑器里能够显示这个键的内容
它只显示一个操作
所以当你需要对这个键进行识别的时候
你不能够像识别
如果碰到它是否是字符是A 是否字符是B
那么简单把A和B放在上面
所以这时候它是通过虚拟键的标识来代表这个键
那么这个应该在编程过程中
尤其对一些键的操作的识别上用得比较多
大家也不要去背这些东西
这些关键词加个VK的前缀就OK啦
还有一个是按下一个非系统键时产生的消息是字符信息CHAR
那么字符信息的话
ABCD是字符 0-9也是字符
这个就不细说了
很重要的一个消息CREATE
这个消息是由CREATEWINDOW这个函数发出的消息
消息里面wParam没有定义
lParam里面它包含了一个CREATESTRUCT数据结构的指针
关于CREATESTRUCT 这是一个很重要的数据结构
我们陆续后面会介绍到
还有CLOSE消息 这个就是关闭窗口时候的消息
那字参数和长字参数它都没有定义
DESTROY消息是DestroyWindow函数关闭Window
销毁Window时候发出的消息
同样的话这个字参数和长字参数都没有使用
QUIT就是退出应用程序了
它是由PostQuitMessage这个函数发出的
有一个非常重要的消息是PAINT
PAINT消息是在屏幕刷新时要调用的消息
所以这个消息的内容比较多
我这里给出了相关的网址
这个PAINT消息刚才说了
是屏幕刷新时产生这个消息
什么时候屏幕上刷新
当用户区改变的时候、移动的时候
或者窗口大小改变
你窗口如果大小改变 给它变小了
原来窗口覆盖的内容要重新显示出来
那么显示这个过程就是刷新
那么比如说大家在移动水平或垂直滚动条的时候
文档内容会随着滚动条的移动发生变化
那么实际上就是显示的内容发生了变化
只要显示的内容发生了变化
就是发生了屏幕的刷新
它不刷新的话怎么产生变化
还有你操作一个菜单
点一个菜单比如说文件菜单
它会弹出来一个菜单
下面有一系列的菜单项
当你选择了菜单项之后那个菜单是关闭掉的
那么关闭掉后 原来打开这个菜单时候覆盖的部分
当菜单关掉的时候被覆盖的部分是要恢复的
这个也是叫做屏幕的刷新
还有Windows系统清除对话框
比如弹出一个打印对话框
那么你进行了打印的相应的操作的时候
这个打印的对话框是要关闭的
那么也就是说清除对话框对象
那么对话框
这个打印对话框覆盖的部分是要恢复的
那么这些过程都要产生PAINT消息进行屏幕的刷新
-讨论实录
--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章源代码
--外部链接
-第一次作业
--第一次作业--作业
-第二次作业
--第二次作业--作业
-第三次作业
--第三次作业--作业