window编程_消息分类

时间:2021-12-09 12:17:32

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编程_消息分类的更多相关文章

  1. 如何给对话框中的控件发送消息呢?Windows消息分类

    以博文CTabCtrl中介绍的那样,给Tab添加子对话框来显示Tab内容.那么如果这个子对话框中含有个CTreeCtrl控件,有个Button控件,我想要模拟给这两个控件发送消息,该怎么办呢?直接把给 ...

  2. centos5.5字体为方块问题的解决_深入学习编程_百度空间

    centos5.5字体为方块问题的解决_深入学习编程_百度空间 centos5.5字体为方块问题的解决 一.yum -y install fonts-chinese二.yum -y install f ...

  3. 20165325 2017-2018-2 《Java程序设计》结对编程_第二周:四则运算

    20165325 2017-2018-2 <Java程序设计>结对编程_第二周:四则运算 一.码云链接 FAO项目的码云链接; 1.Git提交日志已经实现一个功能/一个bug修复的注释说明 ...

  4. 高性能网络编程3----TCP消息的接收

    高性能网络编程3----TCP消息的接收 http://blog.csdn.net/russell_tao/article/details/9950615 http://blog.csdn.net/c ...

  5. 第2课第3节&lowbar;Java面向对象编程&lowbar;继承性&lowbar;P【学习笔记】

    摘要:韦东山android视频学习笔记  面向对象程序的三大特性之继承性:继承性的主要作用就是复用代码.继承性也有一定的限制,如图一 图一 1.我们在第2课第2节_Java面向对象编程_封装性_P 中 ...

  6. Python并发编程之消息队列补充及如何创建线程池(六)

    大家好,并发编程 进入第六篇. 在第四章,讲消息通信时,我们学到了Queue消息队列的一些基本使用.昨天我在准备如何创建线程池这一章节的时候,发现对Queue消息队列的讲解有一些遗漏的知识点,而这些知 ...

  7. chrome 不支持window&period;webkitNotifications&period;createNotification消息通知API了

    今天惊奇的发现,chrome22里已经不支持window.webkitNotifications.createHTMLNotification方法了: 但是,在chrome extension里还可以 ...

  8. 高性能网络编程2----TCP消息的发送

    转 陶辉 taohui.org.cn 在上一篇中,我们已经建立好的TCP连接,对应着操作系统分配的1个套接字.操作TCP协议发送数据时,面对的是数据流.通常调用诸如send或者write方法来发送数据 ...

  9. linux makefile&colon; c&plus;&plus; 编程&lowbar;基础入门&lowbar;如何开始?

    学习android 终究还是需要研究一下其底层框架,所以,学习c++很有必要. 这篇博客,算是linux(ubuntu) 下学习 c++ 的一个入门. 刚开始学习编程语言的时候,最好还是使用命令行操作 ...

随机推荐

  1. Goodbye2014,Hello2015

    正如我在研发会议上说的,总结是为了更好的计划:而计划,则是让你做事有目标,有方向:有了目标和方向,你才能真正把事情做成! 总的来说2014年可以归纳为下图: 2014年总结 一年的活动,基本可以归纳为 ...

  2. 设计模式&lpar;十&rpar;:从电影院中认识&quot&semi;迭代器模式&quot&semi;&lpar;Iterator Pattern&rpar;

    上篇博客我们从醋溜土豆丝与清炒苦瓜中认识了“模板方法模式”,那么在今天这篇博客中我们要从电影院中来认识"迭代器模式"(Iterator Pattern).“迭代器模式”顾名思义就是 ...

  3. python之numpy

    一.矩阵的拼接合并 列拼接:np.column_stack() >>> import numpy as np >>> a = np.arange(9).reshap ...

  4. python 之 PIP 安装

    1.安装的必备包 pip 和 setuptool 都要有, 这个可以从python.org网站下载 //  setuptool 安装  下载地址 https://pan.baidu.com/s/1gf ...

  5. 修改Oracle监听端口

    修改oracle监听端口 修改端口号的整体步骤:1.1   查看当前监听的状态1.2   停止监听1.3   修改监听文件的端口号1.4   修改初始化参数local_listener1.5   重启 ...

  6. POJ 3468 A Simple Problem with Integers(线段树&sol;区间更新)

    题目链接: 传送门 A Simple Problem with Integers Time Limit: 5000MS     Memory Limit: 131072K Description Yo ...

  7. CentOS7安装Nginx-1&period;9&period;9&plus;PHP5&period;6

    linux系统CentOS7 Nginx 下载地址http://nginx.org/en/download.html wget下载路径http://nginx.org/download/nginx-1 ...

  8. NSMutableAttributedString&lpar;改变文字颜色&rpar;

    //类型 //创建一个label    UILabel *label1=[[UILabel alloc]initWithFrame:CGRectMake(130, 60,250, 150)];     ...

  9. ArchLinux 下架设PPTPD VPN服务

    直接上命令吧: 安装: pacman -Sy pacman -S pptpd 配置: vim /etc/pptpd.conf option /etc/ppp/options.pptpd stimeou ...

  10. j2ee log4j集中式日志解决方案logpool v0&period;3

    V0.3相对于v0.2的更新如下: