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. Docker-删除untagged docker images

    故障描述 [root@entel1 ~]# docker rmi entel_zmc_images:zmc_base Untagged: entel_zmc_images:zmc_base 操作步骤 ...

  2. Haskell语言学习笔记(63)Dicidable

    Dicidable class Divisible f => Decidable f where lose :: (a -> Void) -> f a choose :: (a -& ...

  3. 【343】MathJax、LaTex、Mathml 数学公式

    参考:cnblog中添加数学公式支持 分类参考: 1. 基本功能 MathJax 我的LaTeX入门 MathJax basic tutorial and quick reference 分段函数:矩 ...

  4. CVE2016-8863libupnp缓冲区溢出漏洞原理分析及Poc

    1.libupnp问题分析: (1)问题简述: 根据客户给出的报告,通过设备安装的libupnp软件版本来判断,存在缓冲区溢出漏洞:CVE-2016-8863. (2)漏洞原理分析: 该漏洞发生在up ...

  5. 二叉树的创建、遍历(递归和非递归实现)、交换左右子数、求高度(c++实现)

    要求:以左右孩子表示法实现链式方式存储的二叉树(lson—rson),以菜单方式设计并完成功能任务:建立并存储树.输出前序遍历结果.输出中序遍历结果.输出后序遍历结果.交换左右子树.统计高度,其中对于 ...

  6. java的字典排序

    按照教程上的代码还是报错 应该是字典排序的问题,不能是Arrays.sort()

  7. 关于Python的OSError和IOError

    参考:http://stackoverflow.com/questions/29347790/difference-between-ioerror-and-oserror 在3.x版本已经移除,剩下O ...

  8. 查看端口号根据pid号找到相关占用端口应用

    查看端口号根据pid号找到相关占用端口应用   8080 端口被占用不知道被哪个应用软件占用,下面我来教你查出那个该死的应用 方法/步骤   1 首先用netstat 找到端口对应的pid号,找到之后 ...

  9. runloop - CFRunLoopObserverRef

    1.

  10. SqlDataHelper

    using System;using System.Data;using System.Configuration;using System.Linq;using System.Web;using S ...