在别的对话框中使用控件变量

首先,全局化控件关联的成员变量是不推荐的,因为控件、对话框的生命周期是很难控制的。因此,最好是通过应用需求,通过对实例的公有成员来引用。
三种情况区别对待。情况一,CString 所在的Dlg是非模态Dlg,且已经成功创建
DialogA.h
class CDialogA: public CDialog
{
public:
             CString m_strVal;
};

DialogB.cpp
#include "DialogA.h"
...
CDialogB::func(...)
{
         CDialogA * pDlgA = 获取指向DialogA实例的指针
     pDlgA->m_strVal = "Hello";
     pDlgA->UpdateData(FALSE);//显示控件上
}
情况2,CDialogA实例是模态对话框,另一个对话框由CDialogA实例弹出,则可以这样:
DialogA.h
#include "DialogB.h"
class CDialogA: public CDialog
{
public:
             CString m_strVal;
             CDialogB m_dlgB;
...
};
DialogA.cpp
...
void OnButtonPopupDlgB(...)
{
           m_dlgB.m_pstrVal = &m_strVal;
         if (m_dlgB.DoModal()==IDOK)
                   UpdateData(FALSE);
       else
                   UpdateData(); 
       
}
DIalogB.h
class CDialogB: public CDialog
{
public:
             CString   * m_pstrVal;
};
第三个情况,相反,就是由B弹出A,则可
DialogB.cpp
...
void OnButtonPopupDlgA(...)
{
         CDialogA dlg;
         dlg.m_strVal = "Haee";
         dlg.DoModal();
...
}

当然,为了在初始化的时候刷新控件,各个 Dialog的OnInitialDialog方法都要UpdateData(FALSE)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值