在子对话框中如何调用父对话框中的变量?

lnxydl 2004-09-01 04:56:47
在子对话框中如何调用父对话框中的变量?
在父中可以
CSonDlg *dlgSon;
dlgSon->变量;
如果子窗口想使用父窗口中的变量如何使用?也像上面一样定义一个父对话框的变量?如果父是一个from窗口呢?谢谢。

...全文
351 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
junglesong 2004-09-01
  • 打赏
  • 举报
回复
创建子对话框时,构造函数戴上父对话框的指针。以后用这个指针调用父对话框的方法和成员就可以了。
lixiaosan 2004-09-01
  • 打赏
  • 举报
回复
在对话框2中声明对话框1的类

//dlg2.h
class CDlg1;
class CDlg2::CDialog
{
public:
CDlg1 *m_pDlg1;

.....
}

//Dlg1.cpp
CDlg2 dlg;
dlg->m_pDlg1 = this;
dlg.DoModal();
Kudeet 2004-09-01
  • 打赏
  • 举报
回复
假设父对话框为CFatherDlg;
子对话框为CSonDlg,其为CFatherDlg的成员变量;

在CFatherDlg中的变量有:
public:
int m_nValue;
CSonDlg m_SonDlg;

在CSonDlg中的变量有:
public:
int m_nValue;
CButton m_btnTansfer;//传递m_nValue到父对话框的m_nValue;

为按钮m_btnTansfer添加消息响应函数:
void CSonDlg::OnButtonTransfer()
{
// TODO: Add your control notification handler code here

UpdateData(TRUE);//根据需要,是否有需要更新的控件变量
m_nValue=100;//如果m_nValue不是控件变量;
((CFatherDlg*)(CDialog*)GetParent())->m_nValue=m_nValue;
////////注意这里要强制转换两次!!!

//1:还可以利用这个方法直接给CFatherDlg中的控件赋值
//((CFatherDlg*)(CDialog*)GetParent())->SetDlgItemInt(IDC_EDIT_VALUE,m_nValue);
//2:直接从父对话框中获得变量,传到子对话框
//((CFatherDlg*)(CDialog*)GetParent())->GetDlgItem(IDC_EDIT_VALUE)->GetWindowText(m_strValue);m_strValue是CSonDlg的成员变量;可以直接看到变化;
//m_nYear=((CFatherDlg*)(CDialog*)GetParent())->m_nValue

}

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧