MFC--父与子对话框之间的传值

今天同学让我搞一个MFC的父对话框和子对话框的传值,搞了接近一个小时,真的是发现,很多看起来简单的东西,当真正要用的时候才发现自己是多么的眼高手低,

编程一定要多写、、多练!!

1:建立一个MFC应用程序(基于对话框的);

2:添加一个“”发送消息“”按钮,和一个编辑框(添加变量-CEdit  m_edit1 ,CString m_strSendMessage);

3:新建一个对话框,同样添加一个”回传消息到父对话框“”按钮和一个编辑框(添加变量-CEdit  m_edit2 ,CString m_strGetMessage);

4:给子对话框添加一个初始化程序:选择类视图--选择MFC类向导-虚函数-添加OnInitDialog函数,以下是初始化代码,以便在后面打开子窗口的时候,赋值显示

BOOL CGetMessage::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// TODO:  在此添加额外的初始化
	m_edit2.SetWindowTextW(m_strGetMessage);
	return TRUE;  // return TRUE unless you set the focus to a control
	// 异常: OCX 属性页应返回 FALSE
}
5:“发送消息”按钮,双击添加消息响应函数,建立一个非模式的对话框

void CCSendMessageDlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	CString str;
	m_edit1.GetWindowTextW(str);
	CGetMessage *dlg=new CGetMessage();
	dlg->m_strGetMessage=str;
	dlg->Create(IDD_DIALOG1);
	dlg->ShowWindow(SW_SHOWNORMAL);
}

6:双击回传消息到父窗口按钮,添加消息响应函数

GetParent()获取父窗口的指针,如果窗口是子窗口,则返回值是父窗口句柄,如果无则返回NULL。

GetWindowText是Windowa API的一个宏,在WinUser.h中根据是否已定义Unicode被分别定义为GetWindowTextW和GetWindowTextA。

void CGetMessage::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	CCSendMessageDlg *p=(CCSendMessageDlg*)GetParent();
	CString str;
	m_edit2.GetWindowTextW(str);
	p->m_edit1.SetWindowText(str);

}

7:结果图。

MFC--父与子对话框之间的传值_第1张图片 MFC--父与子对话框之间的传值_第2张图片





你可能感兴趣的:(C++,MFC)