消息机制之重要消息

上一节我们讲了Windows是由事件驱动的,任何事件都会被封装成消息,并保存在系统创建的MSG结构里
typddef struct tagMSG{
HWND hWnd; 窗口句柄
UINT Message; 消息的id
WPARAM wParam; 消息的附加信息
LPARAM lParam; 消息的附加信息
DWORD time; 消息产生的事件
POINT ps 消息产生的坐标
}MSG;
消息的本质其实只是一个32位无符号整数,每一个消息对应着一个事件
消息分为两类 队列消息和非队列消息 (非队列消息只有WM_CREATE 和WM_SIZE消息) 非队列消息一产生立即被处理

1:鼠标消息
WM_MOUSEMOVE 鼠标移动消息
WM_MOUSEWHEEL
左键
WM_LBUTTONDOWN 鼠标左键按下消息
WM_LBUTTONNP 鼠标左键弹起消息
WM_LRUTTONDBCLICHK 鼠标左键双击消息
右键
WM_RBUTTONDWON 鼠标右键按下消息
WM_RBUTTONUP 鼠标右键弹起消息
WM_RRUTTONDBCLICHK 鼠标右键双击消息
鼠标双击消息会需要在窗口风格添加CS_DBLCLKS 双击消息会覆盖第二次按下消息
鼠标消息LPARAM里保存着鼠标的位置信息 WPARAM里保存着键盘的按键消息

2:键盘消息
键盘按键分为两种,系统按键 和非系统按键(处了ALT 和F10其他的都是非系统按键)
WM_KEYDOWN 非系统按键按下消息
WM_KEYUP 非系统按键弹起消息
WM_SYSKEYDOWN 系统按键按下消息
WM_SYSKEYUP 系统按键弹起消息
键盘消息里LPARAM不起任何作用 WPARAM里的低16位保存着虚拟键值

3:系统消息
WM_CREATE 窗口创建之后显示之前产生的消息
WM_SIZE 窗口大小发送改变的时候产生的消息 (值得注意的是窗口刚创建的时候窗口的大小为0)可通过
LOWORD(lParam) 宽 HIWORLD(lParam) 高

4:定时器消息
WM_TIMER 定时消息
SetTimer 第四个参数为NULL时就会每个一定的事件产生一个定时器消息 LOWORD(wParam)低16位保存着定时器的ID
可以设置多给定时器 比如游戏的技能CD如果技能释放后需要固定的时间冷缺使用的都是定时器

5:设备改变消息
WM_DEVICECHANGE 设备改变
当计算机上有任何外设接入和拔出时会产生该消息 对附加信息进行个处理够是被插入和拔出的设备

6:窗口重绘消息
WM_PAINT 窗口重绘消息 所有绘图动作 (窗口大小发生改变自己产生的消息 窗口大小发生改变

7:系统菜单处理消息
WM_COMMAND 该消息处理所有菜单消息 弹出式菜单和顶层菜单

WM_SYSCOMMAND 该消息处理系统菜单的消息
WPARAM的低16位保存着菜单的ID
菜单将在我们的下一节中讲到 这些消息就是我们比较常用用到的消息了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值