window编程_消息分类
Window应用程序利用Windows消息(Message)
与应用程序及系统进行信息交换。
消息分为:
消息号:有事先定义好的消息名标识
字节参数(wParam):用于提供消息的附加信息
长字节参数(lParam):用于提供消息的附加信息
注:附加信息与具体消息号的值有关,在Win中消息用结构体MSG表示
//结构体MSG
typedef struct tagMSG
{HWND hwnd; 窗口句柄,为null,则可检索所有驻留在消息队列中的消息
UINT message; 消息值,由Windows.h头文件中的宏定义来标识
WPARAM wParam; 包含有关消息的附加信息,不同消息其值有所不同
LPARAM lParam;
DWORD time; 指定消息送至队列的时间
POINT pt;指定消息发送时屏幕光标的位置,其数据类型POINT也是一个结构体
}MSG;
//结构体POINT
typedef struct tagPOINT
{LONG x;
LONG y;
} POINT;
消息分类:VC中存在几种系统定义的消息分类,
不同的前缀符号经常用于消息宏识别消息附属的分类,
系统定义的消息宏前缀如下:
BM 表示按钮控制消息
CB 表示组合框控制消息
DM 表示默认下压式按钮控制消息
EM 表示编辑控制消息
LB 表示列表框控制消息
SBM 表示滚动条控制消息
WM 表示窗口消息
Windows编程常用消息:
窗口管理消息
初始化消息
输入消息
系统消息
剪贴板消息
控制处理消息
控制通知消息
滚动条通知消息
非用户区消息
MDI消息
DDE消息
应用程序自定义的消息
WM_LBUTTONUP:放开鼠标左键时产生;
WM_RBUTTONDOWN:单击鼠标右键时产生;
WM_RBUTTONUP:放开鼠标右键时产生;
WM_LBUTTONDBLCLK:双击鼠标左键时产生;
WM_RBUTTONDBLCLK:双击鼠标右键时产生。
系统键:是指实现系统操作的组合键,
例如Alt与某个功能键的组合以实现系统菜单操作等
常用Windows消息:
1. WM_LBUTTONDOWN:产生单击鼠标左键的消息
lParam->低字节包含当前光标得X坐标
高字节包含当前光标得Y坐标
wParam包含一整套数值以标识鼠标键的按下状态
2. WM_KEYDOWN:按下一个非系统键是产生的消息->
wParam:按下键的虚拟键码,用以标识按下或释放的键
lParam:记录了按键的重复次数、扫描码、转移代码、先前键的状态等信息。
3. WM_ CHAR:按下一个非系统键时产生的消息
wParam 为按键的ASCII码
lParam 与WM_KEYDOWN的相同
4. WM_CREATE:由CreateWindow函数发出的消息
wParam:未用
lParam:包含一个指向CREATESTRUCT数据结构的指针
5. WM_CLOSE:关闭窗口时产生的消息
wParam和lParam均未用。
6. WM_DESTROY:由DestroyWiodow函数发出的消息
wParam和lParam均未用。
7. WM_QUIT:由PostQuitMessage函数发出的消息,退出应用程序时发出的消息
wParam:含退出代码,标识程序退出运行时的有关信息
lParam:未用
8. WM_PAINT:需要窗口重画是产生的消息
产生条件:
用户移动或显示,用户改变窗口大小,程序通过滚动条滚动窗口,
下拉式菜单关闭并需要恢复被覆盖的部分,
Windows清除对话框等对象,并需要恢复被覆盖的部分
window编程_消息分类的更多相关文章
- 如何给对话框中的控件发送消息呢?Windows消息分类
以博文CTabCtrl中介绍的那样,给Tab添加子对话框来显示Tab内容.那么如果这个子对话框中含有个CTreeCtrl控件,有个Button控件,我想要模拟给这两个控件发送消息,该怎么办呢?直接把给 ...
- centos5.5字体为方块问题的解决_深入学习编程_百度空间
centos5.5字体为方块问题的解决_深入学习编程_百度空间 centos5.5字体为方块问题的解决 一.yum -y install fonts-chinese二.yum -y install f ...
- 20165325 2017-2018-2 《Java程序设计》结对编程_第二周:四则运算
20165325 2017-2018-2 <Java程序设计>结对编程_第二周:四则运算 一.码云链接 FAO项目的码云链接; 1.Git提交日志已经实现一个功能/一个bug修复的注释说明 ...
- 高性能网络编程3----TCP消息的接收
高性能网络编程3----TCP消息的接收 http://blog.csdn.net/russell_tao/article/details/9950615 http://blog.csdn.net/c ...
- 第2课第3节_Java面向对象编程_继承性_P【学习笔记】
摘要:韦东山android视频学习笔记 面向对象程序的三大特性之继承性:继承性的主要作用就是复用代码.继承性也有一定的限制,如图一 图一 1.我们在第2课第2节_Java面向对象编程_封装性_P 中 ...
- Python并发编程之消息队列补充及如何创建线程池(六)
大家好,并发编程 进入第六篇. 在第四章,讲消息通信时,我们学到了Queue消息队列的一些基本使用.昨天我在准备如何创建线程池这一章节的时候,发现对Queue消息队列的讲解有一些遗漏的知识点,而这些知 ...
- chrome 不支持window.webkitNotifications.createNotification消息通知API了
今天惊奇的发现,chrome22里已经不支持window.webkitNotifications.createHTMLNotification方法了: 但是,在chrome extension里还可以 ...
- 高性能网络编程2----TCP消息的发送
转 陶辉 taohui.org.cn 在上一篇中,我们已经建立好的TCP连接,对应着操作系统分配的1个套接字.操作TCP协议发送数据时,面对的是数据流.通常调用诸如send或者write方法来发送数据 ...
- linux makefile: c++ 编程_基础入门_如何开始?
学习android 终究还是需要研究一下其底层框架,所以,学习c++很有必要. 这篇博客,算是linux(ubuntu) 下学习 c++ 的一个入门. 刚开始学习编程语言的时候,最好还是使用命令行操作 ...
随机推荐
- usb输入子系统键盘(四)
目录 usb输入子系统键盘 设计思路 内核的上报代码 完整代码 title: usb输入子系统键盘 tags: linux date: 2018/12/20/ 17:05:08 toc: true - ...
- CMDB服务器管理系统【s5day88】:采集资产-文件配置(一)
django中间件工作原理 整体流程: 在接受一个Http请求之前的准备 启动一个支持WSGI网关协议的服务器监听端口等待外界的Http请求,比如Django自带的开发者服务器或者uWSGI服务器. ...
- 目前的.NET(C#)世界里,主流的ORM框架
推荐一些常用的asp.net ORM框架 SqlSugar (国内) Dos.ORM (国内) Chloe (国内) StackExchange/Dapper (国外) Entity Framewor ...
- [物理学与PDEs]第2章第2节 粘性流体力学方程组 2.1 引言
1. 实际的流体与理想流体的主要区别在于: 前者具有粘性 (内摩擦) 和热传导. 2. 内摩擦 (1) 当两层流体有相对运动时, 方有摩擦力; 它是一种内力; 单位面积上所受的内力称为应力; 而 ...
- mysql常见的问题
1.为什么选择某一个版本 各个版本之间的区别及优缺点 首先,服务器特性 mysql percona mysql mariaDB 开源 开源 开源 支持分区表 支持分区表 支持分区表 innodb Xt ...
- Mysql的多种安装方法———rpm安装
下载地址 搜狐镜像:http://mirrors.sohu.com/mysql 官方网址:https://dev.mysql.com/downloads/mysql/ 一.rpm安装方式 从下载地址下 ...
- Linux之搭建远程数据库[Ubuntu:全过程]
1.mariadb在Linux中首次进入mysql (因为此时还没有创建任何用户,mysql的root并不等效于linux中的root用户) sudo apt-get install mysql-se ...
- eclipse hadoop环境搭建 查看HDFS文件内容
1.下载插件 hadoop-eclipse-plugin-2.5.2.jar放入eclipse/plugin 2.准备hadoop-2.5.0-cdh5.3.6 使用WinSCP远程连接虚拟机,复制h ...
- gitlab服务器搭建
当然喜欢英文的可以参考官方文档:https://about.gitlab.com/downloads/ 1. 根据自己的操作系统选择相应的安装方法,我这边是阿里云 centos 7的 sudo yu ...
- CEC和ARC介绍
众所周知,HDMI作为一个数字化视频音频的接收标准,是可以同时传输视频和音频的,当然随着HDMI版本的提升,它的功能也一直在增强.事实上 当HDMI升级到1.3时,人们就发现了HDMI多了一个CEC功 ...