草稿--Windows消息机制

消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。
MSG含有来自windows应用程序消息队列的消息信息,它在Windows中声明如下:typedef struct tagMsg{HWND    hwnd;       // 接受该消息的窗口句柄UINT    message;    // 消息常量标识符,也就是我们通常所说的消息号// 通常是一个与消息有关的常量值,也可能是窗口或控件的句柄。WPARAM  wParam;     // 32位消息的特定附加信息,确切含义依赖于消息值// 通常是一个指向内存中数据的指针。LPARAM  lParam;     // 32位消息的特定附加信息,确切含义依赖于消息值DWORD   time;       // 消息创建时的时间POINT   pt;         // 消息创建时的鼠标/光标在屏幕坐标系中的位置
    }MSG;// 注意:由于WParam、lParam和Pointer都是32位的,因此,它们之间可以相互转换。

消息可以由系统或者应用程序产生。系统在发生输入事件时产生消息。消息的种类:窗口消息: 是系统中最为常见的消息,它是指由操作系统和控制其他窗口的窗口所使用的消息。命令消息: 这是一种特殊的窗口消息,他用来处理从一个窗口发送到另一个窗口的用户请求。控件通知消息: 只适用于标准的窗口控件如按钮、列表框、组合框、编辑框,以及Windows公共控件如树状视图、列表视图等。窗口消息及控件通知消息主要由窗口类即直接或间接由CWND类派生类处理。命令消息的处理对象范围就广得多,它不仅可以由窗口类处理,还可以由文档类,文档模板类及应用类所处理。附:控件通知消息:按扭控件BN_CLICKED        用户单击了按钮BN_DISABLE 按钮被禁止BN_DOUBLECLICKED  用户双击了按钮BN_HILITE  用/户加亮了按钮BN_PAINT  按钮应当重画BN_UNHILITE 加亮应当去掉组合框控件CBN_CLOSEUP 组合框的列表框被关闭CBN_DBLCLK 用户双击了一个字符串CBN_DROPDOWN 组合框的列表框被拉出CBN_EDITCHANGE 用户修改了编辑框中的文本CBN_EDITUPDATE 编辑框内的文本即将更新CBN_ERRSPACE 组合框内存不足CBN_KILLFOCUS 组合框失去输入焦点CBN_SELCHANGE 在组合框中选择了一项CBN_SELENDCANCEL 用户的选择应当被取消CBN_SELENDOK 用户的选择是合法的CBN_SETFOCUS 组合框获得输入焦点编辑框控件EN_CHANGE 编辑框中的文本己更新EN_ERRSPACE 编辑框内存不足EN_HSCROLL 用户点击了水平滚动条EN_KILLFOCUS 编辑框正在失去输入焦点EN_MAXTEXT 插入的内容被截断EN_SETFOCUS 编辑框获得输入焦点EN_UPDATE 编辑框中的文本将要更新EN_VSCROLL 用户点击了垂直滚动条消息含义列表框控件LBN_DBLCLK 用户双击了一项LBN_ERRSPACE 列表框内存不够LBN_KILLFOCUS 列表框正在失去输入焦点LBN_SELCANCEL 选择被取消LBN_SELCHANGE 选择了另一项LBN_SETFOCUS 列表框获得输入焦点消息的发送:
把一个消息发送到窗口有3种方式:发送、寄送和广播。发送消息的函数有SendMessage、SendMessageCallback、SendNotifyMessage、 SendMessageTimeout;寄送消息的函数主要有PostMessage、PostThreadMessage、 PostQuitMessage;广播消息的函数我知道的只有BroadcastSystemMessage、 BroadcastSystemMessageEx。函数示例:// 发送消息,会被立即处理,处理完毕后函数才会返回;
LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);解析:这个函数主要是向一个或多个窗口发送一条消息,消息被处理后才返回。注意: 如果接收消息的窗口是同一个应用程序的一部分,那么这个窗口的窗口函数就被作为一个子程序马上被调用;如果接收消息的窗口是被另外的线程所创建的,那么窗口系统就切换到相应的线程并且调用相应的窗口函数,这条消息不会被放进目标应用程序队列中。函数的返回值是由接收消息的窗口的窗口函数返回,返回的值取决于被发送的消息。// 寄送消息,不会被立即处理,他被放到一个先进先出的队列中,一直等到应用程序空线的时候才会被处理,不过函数放置消息后立即返回。
BOOL PostMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);解析:该函数把一条消息放置到创建hWnd窗口的线程的消息队列中,该函数不等消息被处理就马上将控制返回。注意: 如果hWnd参数为HWND_BROADCAST,消息将被寄送给系统中的所有的重叠窗口和弹出窗口,但是子窗口不会收到该消息;如果hWnd参数为NULL,则该函数类似于将dwThreadID参数设置成当前线程的标志来调用PostThreadMEssage函数。// 广播消息,
long BroadcastSystemMessage(DWORD dwFlags,LPDWORD lpdwRecipients,UINT uiMessage,WPARAM wParam,LPARAM lParam);解析:该函数可以向指定的接收者发送一条消息,这些接收者可以是应用程序、可安装的驱动程序、网络驱动程序、系统级别的设备驱动消息和他们的任意组合。注意:如果dwFlags参数是BSF_QUERY并且至少一个接收者返回了BROADCAST_QUERY_DENY,则返回值为0;如果没有指定BSF_QUERY,则函数将消息发送给所有接收者,并且忽略其返回值。消息的处理:VC中的消息泵:while(GetMessage(&msg, NULL, 0, 0)){if(!TranslateAccelerator(msg.hWnd, hAccelTable, &msg)){ TranslateMessage(&msg);DispatchMessage(&msg);}}

转载于:https://www.cnblogs.com/xuejianhui/archive/2012/11/14/2770146.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/403453.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序保存图片到相册;uni-app小程序保存网络图片到相册;小程序保存图片到相册拒绝授权后重新拉起授权;保存图片到系统相册;小程序保存图片测试可以,真机保存图片失败

文末代码可以直接复制使用,图片修改成你的图片路径即可 一、场景: 小程序点击按钮,保存项目内的静态图片或者微信头像或者后端返回的图片; 二、注意点及思路拆分: –2.1:小程序保存图片功能,必须…

数组(待完成)

创建 字面量方式 var arr []; var arr ["成员1", 2];//可以是不同成员构造函数方式 空的 var array new Array(); 指定长度 var array2 new Array(10); 成员值都是undefined。此方式有技巧使用 虽然值是undefined,但join后不会出现undefined字符串 比…

VMware打开虚拟机黑屏

排除系统崩溃的情况,比如开机输入密码之后系统黑屏,此原因是由于显示选项开启了3D加速导致的,具体修改步骤: VM->Settings->Hardware->Display 在右面的内容栏中将 Accelerate 3D graphics 取消打勾,然后重启…

[python3.x] 利用chardet检测网页编码

环境:Win7_x64 python3.4.3 需要先下载chardet并进行安装,下载地址:https://pypi.python.org/packages/source/c/chardet/chardet-2.3.0.tar.gz 安装:进入解压后的目录,在命令窗口执行: python setup.py install 写…

js moment时间戳与时间格式相互转换

var moment require(moment) 获取时间戳 : var res moment(Date.now(), YYYY-MM-DD HH:mm:ss).valueOf(); 获取格式时间: var res moment(Date.now()).format(YYYY-MM-DD HH:mm:ss);

微信小程序中base64转换成图片;uni-app小程序base64转图片;微信小程序base64文件转图片;微信小程序base64图片转图片

将微信小程序的图片转成base64 点击此链接看另一篇 以下是将后端返回的base64转成图片: 方法1:使用微信小程序自带方法 //把base64转换成图片getBase64ImageUrl: (base64Url) {/// 获取到base64Datavar base64Data base64Url;/// 通过微信小程序自带方…

PHP流式上传和表单上传(美图秀秀)

最近需要开发一个头像上传的功能&#xff0c;找了很多都需要授权的&#xff0c;后来找到了美图秀秀&#xff0c;功能非常好用。 <?php /*** Note:for octet-stream upload* 这个是流式上传PHP文件* Please be amended accordingly based on the actual situation*/ $post_i…

Linux下如何安装最新版本工具

此博文主要考虑到两个方面的需求&#xff1a; 1.主机处于离线状态&#xff0c;需要离线安装相关工具包&#xff1b; 2.主机的软件源不是最新的&#xff0c;通过在线更新无法达到需求的版本&#xff1b; 此文以获取openssh相关工具包&#xff0c;其他工具包原理类似&#xff…

element-ui 设置table width %百分比

这里的width12设置成min-width!2% 记得所有column都设置百分比哦 <el-table-columnprop"date"label"日期"min-width"12%"></el-table-column>

笔记一

1、logo用<a>标签包围 并给img设置&#xff1a;border&#xff1a;0&#xff08;放置IE浏览器出现框&#xff09; 2、搜索框内有图片&#xff0c;处理方式&#xff1a; 父级div设置border&#xff0c;并调好位置 子级input设置border 0 ;height 100% 图标用<span>包…

[笔记]java-package

[笔记]java&#xff0d;package import 关键字导入一个完整的库时,就会获得“包”(Package)。例如: import java.util.*; 若想导入单独一个类,可在 import 语句里指定那个类的名字: import java.util.Vector; 为 Java 创建一个源码文件的时候,它通常叫作一个“编辑单元”(有时也…

如何安装sshd服务用于远程登录

此博文前提是系统默认没有安装openssh-server&#xff0c;而且现在大部分系统默认只包含openssh-client&#xff0c;这对于需要远程调试和管理的开发者们很不方便&#xff0c;因此本文探讨如何离线安装sshd服务&#xff0c;对于可以在线安装的就比较方便了&#xff0c;可参阅其…

C++中const、volatile、mutable的用法

From: http://blog.csdn.net/wuliming_sc/article/details/3717017 const修饰普通变量和指针 const修饰变量&#xff0c;一般有两种写法&#xff1a; const TYPE value; TYPE const value; 这两种写法在本质上是一样的。它的含义是&#xff1a;const修饰的类型为TYPE的变…

调用未绑定的父类方法和使用supper 函数 之间的选择.

class New_int(int): # 定义一个新的类 继承 int 类def __add__(self,other): # 重写 运算符 # __add__ 就是 int 中 的行为return int.__sub__(self,other) # 重写的 加法运算符 调用 int类 里面的 减法运算运算符def __sub__(self,other):return int.__add__(self…

VMware Tools installation cannot be started manually while Easy Install is in progress.

出现此错误提示主要是由于虚拟机设置里面 CD/DVD 和 Floppy 选项被占用导致 VMware Tools 虚拟光驱无法加载导致&#xff0c;因此设置如下&#xff1a; VM –> Settings –> Hardware –> CD/DVD && CD/DVD 2 && Floppy 这三个选项全部设置为 Auto d…

派生类类型可以转换为基类类型,反之则不行

派生类的对象都含有基类对象作为其一部分&#xff0c;我们可以将指向派生类型的引用转换为指向它的基类型的引用&#xff0c;像转换指针一样&#xff0c;我们可以用派生类的对象初始化或赋值基类对象&#xff0c;反之却不行。class base{ public: }; class derived:public base…

Mac 下隐藏显示隐藏文件

直接使用快捷键&#xff1a; 在 macOS Sierra&#xff0c;可以使用快捷键⌘⇧.(Command Shift .) 来快速&#xff08;在 Finder 中&#xff09;显示和隐藏隐藏文件了。 Mac 下隐藏显示隐藏文件

/bin/tar: 从成员名中删除开头的“/”

From: http://www.361way.com/tar-error/1550.html 今天在使用tar进行打包时&#xff0c;发现报了‘从成员名中删除开头的“/”’的错误。我使用的打包语句如下&#xff1a; [rootbj~]# tar czvf test.tar.gz /root/tomcat/tar: 从成员名中删除开头的“/”/root/tomcat//root…

关于单片机中断

中断&#xff1a;CPU停止当前任务&#xff0c;去处理中断内容&#xff0c;处理完后自动恢复以前任务。 单片机有5个中断源&#xff0c;2个中断优先级&#xff0c;中断受两级控制&#xff1a; 1、CPU开总中断&#xff1b; 2、中断源开中断。 中断源&#xff1a;引起中断事件的类…

不带缓存的I/O和标准(带缓存的)I/O

首先&#xff0c;先稍微了解系统调用的概念&#xff1a;   系统调用&#xff0c;英文名system call&#xff0c;每个操作系统都在内核里有一些内建的函数库&#xff0c;这些函数可以用来完成一些系统系统调用把应用程序的请求传给内核&#xff0c;调用相应的的内核函数完成所…