在MFC项目开发中,涉及到不同模块间数据信息的传递,如用户在登录界面成功登录后向系统管理模块发送用户名和密码等信息。

  首先,需明确以下两点:

  • 谁要发送这个消息--消息发送方
  • 谁要接受这个消息--消息接收方

  本文以对象A向对象B发送消息为例进行讲解,具体如下:

1.消息发送方:发送消息

  首先在A的头文件(*.h)中自定义这个消息:

 #define WM_MyMessage WM_USER+100

或者:

 const UINT WM_MYMESSAGE = WM_USER + n

需注意以下几点:

  • 所有自定义消息都是以WM_USER消息为基础加上一个任意的自然数n来表示的,

    n一般至少大于100

  • 该消息一般加在stdafx.h 或resource.h 或*.h中,一般都是全局变量头文件

  • A是向外发送消息的对象,因此在A的某个方法(函数)里就会调用用来发消息的函数B::SendMessage()/B::PostMessage(),因为是B接受消息。

2.消息接收方:接受消息

  消息接收方对象接受一个消息,需有以下三部分:

  • 在头文件(*.h)中有该消息的处理函数的原型;
  • 在实现文件(*.cpp)中有接受消息映射的宏;
  • 在实现文件(*.cpp)中有该消息的处理函数的具体实现。

2.1 头文件中加上自定义消息的处理函数原型

  在DECLARE_MESSAGE_MAP()语句之前,加如下形式的函数原型:

 afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);

对Win32来说,wParam, lParam是传递消息最常用的手段。

2.2 实现文件中加上接受消息映射的宏

  在cpp文件里,BEGIN_MESSAGE_MAP语句之后,加如下形式的代码:

 ON_MESSAGE(WM_MyMessage, OnMyMessage)

也就是说WM_MyMessage消息对应OnMyMessage函数。注意,上面是不用分号结尾的。

2.3 在实现文件中给出消息处理函数的具体实现

 LRESULT CBDlg::OnMyMessage( WPARAM wParam, LPARAM lParam )
{
//处理用户自定义消息
......
return ;
}

如何在MFC对话框之间自定义消息传递的更多相关文章

  1. 如何在MFC对话框应用程序中使用ColorPicker控件

    在日常的应用程序开发中,当涉及到曲线绘制时,为了将多条不同类型的曲线区分开,常常需要将它们指定不同的颜色.今天在这里简单的记录一下,如何实现及使用ColorPicker控件.程序用到4个文件依次为:C ...

  2. MFC技术内幕系列之(四)---MFC消息映射与消息传递内幕

    ////////////////////////////////////////////////////////////////////////////////////                 ...

  3. 【MFC】如何在MFC创建的程序中更改主窗口的属性 与 父窗口 WS_CLIPCHILDREN 样式 对子窗口刷新的影响 与 窗体区域绘制问题WS_CLIPCHILDREN与WS_CLIPSIBLINGS

    如何在MFC创建的程序中更改主窗口的属性 摘自:http://blog.sina.com.cn/s/blog_4bebc4830100aq1m.html 在MFC创建的单文档界面中: (基于对话框的, ...

  4. MFC对话框中显示背景图片

    在MFC对话框中显示图片,四个步骤. 1.首先得在VC6.0或者VS2008(其他版本也是一样)中导入GDI文件.(网上下载:) GDI含义是图形设备接口,主要任务是负责系统与绘图程序之间的信息交换, ...

  5. 【VS开发】【CUDA开发】如何在MFC中调用CUDA

    如何在MFC中调用CUDA 有时候,我们需要在比较大的项目中调用CUDA,这就涉及到MFC+CUDA的环境配置问题,以矩阵相乘为例,在MFC中调用CUDA程序.我们参考罗振东iylzd@163.com ...

  6. 基于MFC对话框的2048游戏

    在之前一篇<简单数字拼板游戏学习>基础上修改,地址:http://www.cnblogs.com/fwst/p/3706483.html 开发环境:Windows 7/ Visual St ...

  7. MFC对话框显示BMP图片

    1.MFC对话框显示BMP图片我们先从简单的开始吧.先分一个类: (一) 非动态显示图片(即图片先通过资源管理器载入,有一个固定ID) (二) 动态载入图片(即只需要在程序中指定图片的路径即可载入) ...

  8. MFC对话框中使用CHtmlEditCtrl

    MFC对话框中使用CHtmlEditCtrl 感谢原帖作者: http://blog.csdn.net/tingya/article/details/2028172 我在VS2008校正了一些代码. ...

  9. MFC对话框中显示BMP,JPG图片

    //************************************ // 方法说明:    显示JPG和GIF.BMP图片 // 参数说明:    CDC * pDC           设 ...

随机推荐

  1. 从ASP.NET传递参数给水晶报表

    原文 http://www.cnblogs.com/insus/p/3281114.html 上次Insus.NET有简单写了一篇文章<Visual Studio 2012使用水晶报表Cryst ...

  2. 一个js爬虫

    1. 第一个demo 2. configs详解——之成员 3. configs详解——之field 4. configs详解——之site, page和console 5. configs详解——之回 ...

  3. 文件上传与下载/Mail

    文件上传与下载 提交方式:post 表单中要有文件上传的表单项 input type=”file”而且必须有name属性 表单类型要加入 encytype=”mulitpart/form-data” ...

  4. 配置php中的Oracle扩展

    window 1. 从 OTN Instant Client page下载windows客户端安装包,安装包的位数(32/64位)必须和你所使用的操作系统类型.php版本一致.解压安装包至C:\ins ...

  5. URAL 1796. Amusement Park (math)

    1796. Amusement Park Time limit: 1.0 second Memory limit: 64 MB On a sunny Sunday, a group of childr ...

  6. JavaScript字符串插入、删除、替换函数

    JavaScript字符串插入.删除.替换函数 说明: 以下函数中前两个函数取出查找字符串的前一部分和后一部分,以用于其他函数.注意,调用一次 replaceString(mainStr,search ...

  7. 《转载》详解 CSS 属性 - 伪类和伪元素的区别

    首先,阅读 w3c 对两者的定义: CSS 伪类用于向某些选择器添加特殊的效果. CSS 伪元素用于将特殊的效果添加到某些选择器. 可以明确两点,第一两者都与选择器相关,第二就是添加一些“特殊”的效果 ...

  8. 后缀数组的一些性质----height数组

    height数组:定义 height[i] = suffix[i-1] 和 suffix[i] 的最长公共前缀,也就是排名相邻的两个后缀的最长公共前缀.那么对于 j 和 k 不妨设 Rank[j] & ...

  9. QF——iOS程序运行原理(APP的生命周期)

    iOS程序的运行原理: main.m: 1. main.m 主函数是所有程序的入口函数. 2. 在main函数里是UIApplicationMain函数,开启了一个无限循环,以监听该应用. 该UIAp ...

  10. 如何寻找java的安装路径问题

    关于不知道JAVA安装在linux的哪 .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans ...