PostMessaget与ON_MESSAGE
PostMessage是Windows API( 应用程序接口) 中的一个常用函数,用于将一条消息放入到 消息队列中。
函数功能
该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回,是异步消息模式。
消息队列里的消息通过调用GetMessage和PeekMessage取得。
原型与参数
函数原型:B00L PostMessage(HWNDhWnd,UINTMsg,WPARAMwParam,LPARAMlParam);
参数说明: hWnd:其窗口程序接收消息的窗口的句柄。可取有特定含义的两个值:
HWND_BROADCAST:消息被寄送到系统的所有顶层窗口,包括无效或不可见的
非自身拥有的窗口、被覆盖的窗口和弹出式窗口。
消息不被寄送到子窗口
NULL:此函数的操作和调用参数dwThread设置为当前线程的
标示符PostThreadMessage函数一样
Msg:指定被寄送的消息。
wParam:指定附加的消息特定的信息。
Param:指定附加的消息特定的信息。
返回值:如果函数调用成功,返回非零值:如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。
速查信息
Windows NT: 3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;
头文件:winuser.h;输入库:user32.lib;
Unicode:在Windows NT环境下以Unicode和ANSI方式实现。
ON_MESSAGE是MFC里面的一个自定义消息映射宏(如果想了解MFC中自定义消息的工程,请自己在网上搜索一下,网上很多资料),
它的作用是绑定一个自定义的消息和该消息的响应函数。
原型与参数
函数原型:ON_MESSAGE(message, memberFxn )
参数说明:message:消息的ID。
memberFxn :映射message的消息函数,该函数的类型必须是以下类型的
afx_msg LRESULT (CWnd::*)(WPARAM, LPARAM)。
备注:用户自定义消息通常定义在WM_USER(0x0400)至0x7FFF范围内,用户定义的任何消息都不是正规的windows窗口消息WM_MESSAGE 。 用户自定义消息必须明确地在程序中用ON_MESSAGE宏来声明,从而绑定一个消息响应函数
注意:除了用户自定义消息,ON_MESSAGE很少用来绑定windows的command消息。
举例:
//.h
…
#define WM_MYMESSAGE (WM_USER + 100)
…
//发送消息
//.cpp
…
::PostMessage(g_hWndCaller, WM_MYMESSAGE, wParam, lParam);
//接收消息
//.cpp
…
BEGIN_MESSAGE_MAP(CMyWnd2, CWnd)
ON_MESSAGE(WM_MYMESSAGE, OnMyMessage)
END_MESSAGE_MAP() …
LRESULT CMyWnd2::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
UNREFERENCED_PARAMETER(wParam);
UNREFERENCED_PARAMETER(lParam); // Handle message here.
return 0;
}
…
PostMessaget与ON_MESSAGE相关推荐
- ON_MESSAGE,ON_COMMAND和ON_NOTIFY的区别和联系
ON_COMMAND是菜单和工具栏项处理消息的宏 ON_MESSAGE是处理自定义消息的宏 ON_NOTIFY 是控件向其父窗口发送消息处理的宏 对这几个消息的理解要先了解一下Window消息的背景. ...
- 【转】ON_MESSAGE使用方法
ON_MESSAGE响应的是自定义消息,有关自定义消息的处理请看如下步骤: 1.定义消息: 在CCDlg类的头文件中加入如下代码: #define WM_CUSTOMIZE WM_USER+1 头文 ...
- ON_COMMAND和ON_MESSAGE的区别
在MFC应用程序中传输的消息有三种类型:窗口消息.命令消息和控件通知. 窗口消息(Window Message)一般与窗口的内部运作有关,如创建窗口.绘制窗口和销毁窗 口等.通常,消息是从系统发送到窗 ...
- [转]MFC中ON_COMMAND, ON_MESSAGE, ON_NOTIFY它们的区别
ON_COMMAND是菜单和工具栏项处理消息的宏 ON_MESSAGE是处理自定义消息的宏 ON_NOTIFY 是控件向其父窗口发送消息处理的宏 对这几个消息的理解要先了解一下Window消息的背景 ...
- VC中自定义消息ON_MESSAGE的用法
在一个对话框mark.cpp中,自定义一个消息, 首先在mark.cpp中添加 #define WM_DATA WM_USER+100 之后再mark.h里 protected: // Gener ...
- ON_MESSAGE和ON_NOTIFY 区别
ON_COMMAND是菜单和工具栏项处理消息的宏 ON_MESSAGE是处理自定义消息的宏 ON_NOTIFY 是控件向其父窗口发送消息处理的宏 对这几个消息的理解要先了解一下Window消息的背景. ...
- 终极理解ON_MESSAGE和ON_NOTIFY
------<两种消息发送>-------------------- SendMessage()----> ON_MESSAGE(注册的消息) ON_NOT ...
- python---websocket的使用
一:简介 推文:WebSocket 是什么原理?为什么可以实现持久连接? 推文:WebSocket:5分钟从入门到精通(很好) WebSocket协议是基于TCP的一种新的协议.WebSocket最初 ...
- MFC最小化到系统托盘
在VC++中,想实现将MFC最小化到系统托盘,需要调用NOTIFYICONDATA类,并注册相应的消息,以下详细讲解如何实现: 第一步,声明一个NOTIFYICONDATA类,也就是NOTIFYICO ...
最新文章
- socket的长连接与短连接
- python linux arm_[Python]python for ARM/LINUX
- SecureCRT自动登录
- 每天一个linux命令(46):vmstat命令
- WinForm 捕获最小化事件
- php mysql_fetch_array mysql_fetch__php提示Warning:mysql_fetch_array() expects的解决方法
- C语言学习书籍推荐《C语言程序设计 现代方法(第2版)》下载
- 微软加入Linux基金会共建开源生态,并对谷歌加入.NET社区的举措表示欢迎
- cal日历工具的用法
- 31. HTTP 与 HTTPS 区别
- 程序相关概念及OS Linux发行版
- python破解excel进入密码(指定密码字符)
- C# libUSBDotNet 操作USB
- 百度AI开放平台,共建AI生态
- Python3+wxPython3+robotframwork+ride3安装步骤
- 点餐小程序系统/基于微信小程序的点餐系统/点餐平台网站
- ikbc机械键盘打字出现重复_再也不怕半夜打字影响家人了——ikbc c104机械键盘评测...
- IDEA安装和使用教程,idea 安装本地插件
- ubuntu16.04安装破解matlab2016详细教程
- IBM DB2数据库实战培训课程(2天速成版)视频教程