MFC 自定义消息实现与响应

文章转自:http://blog.csdn.net/wangshiqilin_fjy/article/details/14458843


网上关于“MFC自定义消息”相关的文章实在有点杂,至少我查这部分资料的时候很头疼。好吧,为了让看这篇文章的码农同行少走点弯路,我不介意在这里一步一步的告诉您,自定义消息应该如何实现。按照步骤走,我相信你的程序可以运行!


一、目标:在父窗口的Edit Control中写入信息,单击确定按钮后在子窗口的Edit Control中显示出来。其中发送消息是父窗口,接受消息是子窗口。

 

二、准备工作

建立一个基于对话框的MFC应用程序,添加一个子窗口,用来接受父窗口的信息。

父窗口与子窗口都有一个EditBox控件,为其添加一个Value类型变量:m_MessageToSend,我们要往该控件填入发送的字符串;

为子窗口的EditBox控件添加value类型的成员变量:m_RcvMsg,他接受传递过来的信息。

 

三、实现 

         1、发送消息的实现。

         为父窗口所在类的.h文件中添加消息宏:

         #defineWM_MY_MESSAGE (WM_USER+100)

          击父窗口的“确定”按钮,改写内容如下:

[cpp]  view plain  copy
 print ?
  1. void CMFC_MessageDlg::OnBnClickedOk()  
  2. {  
  3.          //TODO: 在此添加控件通知处理程序代码  
  4.                     
  5.          UpdateData();          //将控件中的值赋值到对应的变量中  
  6.          CSon*ptr = new CSon;  
  7.          ptr->Create(IDD_DIALOG_SON);  
  8.          CString*msg= new CString(m_MessageToSend);//        初始化一个指针  
  9.          ::SendMessage(  
  10.                    *FindWindow(NULL,_T("SON"))                //FindWInd(NULL,_T(***))通过窗口名返回窗口的句柄指针  
  11.                    ,WM_MY_MESSAGE                              
  12.                    ,0  
  13.                    ,(LPARAM)msg);                                   //信息的地址  
  14.          ptr->ShowWindow(SW_NORMAL);  
  15.          deletemsg;  
  16. }  

        

2.消息接收的实现

为子窗口所在类的.h文件中添加消息宏:

         #defineWM_MY_MESSAGE (WM_USER+100)

在接受消息的窗口类头文件中添加消息映射:

afx_msg LRESULT OnMyMessage(WPARAMwParam,LPARAM lParam);

在要响应的类的.cpp文件中增加消息映射部分

ON_MESSAGE(WM_MY_MESSAGE,OnMyMessage)

在接受消息的窗口类的实现文件(.cpp)中添加消息处理函数

[cpp]  view plain  copy
 print ?
  1.          LRESULTCSon::OnMyMessage(WPARAM wParam,LPARAM lParam)  
  2. {  
  3.          CString*rmsg = (CString*)lParam;       //传递过来的是地址。  
  4.          m_RcvMsg= *rmsg;                                     //保存传递过来的信息到Edit Control 中  
  5.          UpdateData(FALSE);                                     //将传递过来的信息显示在EditControl上  
  6.          return 0;  
  7. }      


   

完成。

我用VS2010写了这个程序,下载链接在此:点击打开链接

发布了294 篇原创文章 · 获赞 381 · 访问量 142万+

猜你喜欢

转载自blog.csdn.net/sinat_20265495/article/details/71775353