MFC中对话框之间消息传递

1.新建MFC对话框工程Message。
2.添加对话框资源IDD_DIALOG。
3.通过类向导为对话框IDD_DIALOG添加新类CMyDialog。
4.在对话框IDD_MESSAGE_DIALOG上增加编辑框IDC_EDIT1,并添加CEdit类型变量m_Edit。
5.在对话框IDD_MESSAGE_DIALOG上增加按钮IDC_BTN_M,并添加单击事件OnBtnM()。
6.在OnBtnM()事件中显示对话框IDD_DIALOG(CMyDialog m_dlg; m_dlg.DoModal();)。


7.在stdafx.h中添加  #define WM_MYMESSAGE WM_USER+100
8.在CMessageDlg.h的protected中声明 afx_msg void OnMyMessage(WPARAM wParam, LPARAM lParam);
9.在CMessageDlg.cpp的BEGIN_MESSAGE_MAP(CMessageDlg, CDialog)中添加:ON_MESSAGE(WM_MYMESSAGE,OnMyMessage)
10.在CMessageDlg.cpp中添加函数
void CMessageDlg::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
m_Edit.SetWindowText(_T("123"));
}


11.为对话框的按钮IDOK添加单击事件OnOK()
12.在MyDialog.cpp中添加#include "MessageDlg.h"
13.在OnOK()事件中添加代码
HWND hWnd=::FindWindow(NULL,_T("Message")); //寻找子窗口用FindWindowEx

::SendMessage(hWnd,WM_MYMESSAGE,0,0);

 

 

注意在VS2008以上版本中会有错误:

error C2440: “static_cast”: 无法从“void (__thiscall CMainFrame::* )(void)”转换为“LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)”

因为OnMessage返回值必须为LRESULT 所以需要做如下修改:

1、afx_msg LRESULT OnMessage(WPARAM, LPARAM);

2、把原来的消息函数返回值类型改为LRESULT,函数内加上 return 0

3、然后消息函数的参数必须改写成(WPARAM wParam,LPARAM lParam)而不论这两个参数是否用得到


http://bbs.bccn.net/thread-348167-1-1.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值