如何在MFC对话框之间自定义消息传递
在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对话框之间自定义消息传递的更多相关文章
- 如何在MFC对话框应用程序中使用ColorPicker控件
在日常的应用程序开发中,当涉及到曲线绘制时,为了将多条不同类型的曲线区分开,常常需要将它们指定不同的颜色.今天在这里简单的记录一下,如何实现及使用ColorPicker控件.程序用到4个文件依次为:C ...
- MFC技术内幕系列之(四)---MFC消息映射与消息传递内幕
//////////////////////////////////////////////////////////////////////////////////// ...
- 【MFC】如何在MFC创建的程序中更改主窗口的属性 与 父窗口 WS_CLIPCHILDREN 样式 对子窗口刷新的影响 与 窗体区域绘制问题WS_CLIPCHILDREN与WS_CLIPSIBLINGS
如何在MFC创建的程序中更改主窗口的属性 摘自:http://blog.sina.com.cn/s/blog_4bebc4830100aq1m.html 在MFC创建的单文档界面中: (基于对话框的, ...
- MFC对话框中显示背景图片
在MFC对话框中显示图片,四个步骤. 1.首先得在VC6.0或者VS2008(其他版本也是一样)中导入GDI文件.(网上下载:) GDI含义是图形设备接口,主要任务是负责系统与绘图程序之间的信息交换, ...
- 【VS开发】【CUDA开发】如何在MFC中调用CUDA
如何在MFC中调用CUDA 有时候,我们需要在比较大的项目中调用CUDA,这就涉及到MFC+CUDA的环境配置问题,以矩阵相乘为例,在MFC中调用CUDA程序.我们参考罗振东iylzd@163.com ...
- 基于MFC对话框的2048游戏
在之前一篇<简单数字拼板游戏学习>基础上修改,地址:http://www.cnblogs.com/fwst/p/3706483.html 开发环境:Windows 7/ Visual St ...
- MFC对话框显示BMP图片
1.MFC对话框显示BMP图片我们先从简单的开始吧.先分一个类: (一) 非动态显示图片(即图片先通过资源管理器载入,有一个固定ID) (二) 动态载入图片(即只需要在程序中指定图片的路径即可载入) ...
- MFC对话框中使用CHtmlEditCtrl
MFC对话框中使用CHtmlEditCtrl 感谢原帖作者: http://blog.csdn.net/tingya/article/details/2028172 我在VS2008校正了一些代码. ...
- MFC对话框中显示BMP,JPG图片
//************************************ // 方法说明: 显示JPG和GIF.BMP图片 // 参数说明: CDC * pDC 设 ...
随机推荐
- 凯恩斯主义VS货币主义
Milton Friedman在1960年代后期以及整个1970年代,到处不知疲倦地像传教士一般地宣讲他的货币主义.当时,美联储成员几乎清一色地是凯恩斯主义者.你可以想像Friedman的对手是多么强 ...
- UVA1292-----Strategic game-----树形DP解决树上的最小点覆盖问题
本文出自:http://blog.csdn.net/dr5459 题目地址: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&a ...
- SpringMVC中使用zTree
1 前端页面 <%@ page language="java" import="java.util.*" pageEncoding="UTF- ...
- MFC的规则DLL中资源使用的问题
今天刚刚做了一个静态链接到MFC的规则dll,即“Use MFC in a static library“,该dll用来显示一个窗体.然后在一个mfc可执行程序A.exe中调用这个dll文件,可以正常 ...
- Qt部件--烧肉
1,QSplitter
- ceph rpm foor rhel6
ceph-0.86-0.el6.x86_64.rpm 09-Oct-2014 10:00 13M ceph-0.87-0.el6.x86_64.rpm 29-Oct-2014 13:38 13M ce ...
- POJ3322-经典的游戏搜索问题
临近毕业真是各种琐事多,好不容易写完几万字蛋疼的论文,又接着户口档案挂靠,毕业旅游,20多个离校盖章,签证被check了几个星期还没消息,希望8月初能走啊. 各种事情之下,人就是懒加心散,好久没写代码 ...
- Android-Tab单选控件
今天看到项目中有一个控件写得很美丽,据说是github上开源的控件,地址没找到,例如以下图所看到的,很常见的效果,几个tab页面来回切换: 转载请标明出处:http://blog.csdn.net/g ...
- 服务端API的OAuth认证实现
http://stackoverflow.com/questions/12499602/body-joints-angle-using-kinect?rq=1 新浪微博跟update相关的api已经挂 ...
- 泛泰A870S官方4.4.2系统S0218210 内核版本号信息
从EGL中获取的信息: OpenGL ES Shader Compiler Version: 17.01.12.SPL Build Date: 02/24/14 Mon Local Branch: R ...