1. 基本知识
SendMessage的基本结构如下:
SendMessage(
    HWND hWnd,  //消息传递的目标窗口或线程的句柄。
    UINT Msg, //消息类别(这里可以是一些系统消息,也可以是自己定义,下文具体介绍,)
    WPARAM wParam, //参数1 (WPARAM 其实是与UINT是同种类型的,
  //在vc编译器中右键有个“转到WPARAM的定义”的选项可以查看。 
    LPARAM lParam); //参数2
其中一些参数的由来如下:
//typedef unsigned int UINT;
//typedef UINT WPARAM;
//typedef LONG LPARAM;
//typedef LONG LRESULT;
2.具体实现
主要有两部分组成,一部分是发送消息的对话框,一部分是接受消息的对话框。
1)发送消息部分
(1).首先在发送消息的头文件中自定义一个消息,格式如下:
#define WM_USERMESSAGE WM_USER+101 //WM_USERMESSAGE为自己定义的消息名称
(2).然后在要发送消息的函数中添加将要发送的自定义消息,代码如下:
::SendMessage(hwnd,WM_USERMESSAGE,XXXX,XXXX);
其中,hwnd是要发送到的对话框的句柄,WM_USERMESSAGE为用户自定义的消息名称,若传值,则放在后两个参数中。
2)接收消息部分
(1).首先同样在头文件中定义自定义消息(与发送消息部分保持一致),如下:
#define WM_USERMESSAGE WM_USER+101 //WM_USERMESSAGE为自己定义的消息名称
(2).假设打算在函数ReceiveMessage()中接收函数,那么在接收对话框的头文件中找到消息映射函数的声明部分,加入自定义的消息映射函数声明, 如下:
// Generated message map functions //{{AFX_MSG(CBaseInfoView)
 
afx_msg LRESULT ReceiveMessage(WPARAM wParam, LPARAM lParam); //添加自定义消息声明,其他代码行为程序原有 
 
//}}AFX_MSG
然后在接收消息对话框的源文件中找到消息映射宏部分,加入我们自定义的消息映射宏,代码如下:
BEGIN_MESSAGE_MAP(CBaseInfoView, CFormView)//
  //{{AFX_MSG_MAP(CBaseInfoView)  
 
ON_MESSAGE(WM_USERMESSAGE,ReceiveMessage) // 添加自定义消息映射宏,其他代码行为程序原有 
 
//}}AFX_MSG_MAP END_MESSAGE_MAP()
最后在源文件中自定义消息接收函数ReceiveMessage中添加接收消息处理函数,例如下:
LRESULT CBaseInfoView::ReceiveMessage(WPARAM wParam, LPARAM lParam)  
{  
int recvint = wParam;  
CString recvstr = (LPCTSTR)lParam;
XXXXXXXXXXXXXX   //自定义消息处理,recvint和recvstr为传递过来的值,可根据需要进行选择处理
return true; 
}

MFC中不同对话框间使用SendMessage发送自定义消息的具体实现的更多相关文章

  1. [原]MFC中DIALOG(对话框)程序响应加速键(快捷键)

    [原]MFC中DIALOG(对话框)程序响应加速键(快捷键) 2014-8-6阅读266 评论0 新建一个对话框程序,项目名为Test,删除默认确定,取消和静态文本框控件.添加一个按钮,Caption ...

  2. MFC中文件对话框类CFileDialog详解及文件过滤器说明

    当前位置 : 首页 » 文章分类 :  开发  »  MFC中文件对话框类CFileDialog详解及文件过滤器说明 上一篇 利用OpenCV从摄像头获得图像的坐标原点是在左下角 下一篇 Word中为 ...

  3. MFC中模态对话框和非模态对话框的差别

    在MFC中有模态对话框和非模态对话框,那这两种有什么差别呢. 又都是用于什么场合呢. 首先,要弄清楚2种对话框是怎样创建的. 然后要弄清楚2种对话框有什么差别,可能从表面上看,模态会堵塞主对话框.可原 ...

  4. SendMessage发送自定义消息及消息响应

    控件向父窗体发送自定义消息,父窗体定义处理此消息的函数   效果描述: 指定哪个类添加自定义消息:(当然这个类必须是CmdTarget的子类,不然不能处理消息) 添加消息 实现消息函数:(wParam ...

  5. SendMessage发送自定义消息及消息响应(VC版)

    控件向父窗体发送自定义消息,父窗体定义处理此消息的函数  程序源代码(整个工程)下载:http://download.csdn.net/detail/qq2399431200/6274793 效果描述 ...

  6. MFC中设置对话框/窗体大小固定

    对话框:1.响应WM_GETMINMAXINFO消息(设置lpMMI->ptMinTrackSize和lpMMI->ptMaxTrackSize)2.响应消息WM_SYSCOMMAND,屏 ...

  7. MFC中页面设置对话框CPageSetupDialog

    void CCPageSetupDialogView::OnPageSetting() { CPageSetupDialog dlg; // 利用默认参数构造页面设置对话框 if(dlg.DoModa ...

  8. 【MFC】MFC中使对话框变成圆角矩形的代码(转)

    原文转自 http://blog.csdn.net/cracent/article/details/48274469 BOOL CLoginDlg::OnInitDialog() { CDialog: ...

  9. MFC中打印对话框CPrintDialog类

    void CCPrintDialogView::OnPrint() { DWORD dwflags=PD_ALLPAGES|PD_NOPAGENUMS|PD_USEDEVMODECOPIES|PD_S ...

随机推荐

  1. Delphi 操作键盘按下和释放操作

    Unit Unit1; Interface Uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ...

  2. 是否需要主动调用Bitmap的recycle方法

    一个Bitmap使用完后,是只需要等它成为垃圾后让GC去回收,还是应该主动调用recycle方法呢?或者说,主动调用recycle方法是否有好处,是否能马上回收内存呢? 带着这个问题来看源码(我看的4 ...

  3. zset

    zset sorted set,有序集合 元素为string类型 元素具有唯一性,不重复 每个元素都会关联一个double类型的score,表示权重,通过权重将元素从小到大排序 说明:没有修改操作 增 ...

  4. spring学习笔记(二)

    Spring的Bean管理:(注解方式) Spring的AOP:XML方式 Spring的AOP:注解方式 1.Spring的Bean管理的中常用的注解: * @Controller   :WEB层 ...

  5. IIS中的MIME类型设置

    https://www.cnblogs.com/David-Young/p/5323949.html

  6. myeclipse 10激活,本人已测试过可行

    激活步骤: 下载myeclipse 10硬解程序包: ed2k://|file|%5Bmyeclipse.10.0.%E6%9B%B4%E6%96%B0%E5%8F%91%E5%B8%83%28%E7 ...

  7. racktables 的介绍及搭建指南

    Racktables RackTables称自己为一个“机架空间.IP地址.服务器.交换机.路由器等 的管理框架”.它拥有一个web界面,执行报告和配置,并管理名字服务.RackTables以PHP5 ...

  8. C++ 模板的全特化与偏特化

    模板为什么要特化,因为编译器认为,对于特定的类型,如果你能对某一功能更好的实现,那么就该听你的. 模板分为类模板与函数模板,特化分为全特化与偏特化.全特化就是限定死模板实现的具体类型,偏特化就是如果这 ...

  9. iOS 管理库 Carthage 安装以及使用

    https://blog.csdn.net/Mazy_ma/article/details/70185547

  10. session以及分布式服务器session共享

    一.session的本质 http协议是无状态的,即你连续访问某个网页100次和访问1次对服务器来说是没有区别对待的,因为它记不住你. 那么,在一些场合,确实需要服务器记住当前用户怎么办?比如用户登录 ...