MFC中怎么样全局化控件关联的成员变量?

我MFC的对话框中有一个编辑框控件,控件关联了一个CString成员变量,怎么样才能在另一个对话框的cpp中操作这个变量呢?... 我MFC的对话框中有一个编辑框控件,控件关联了一个CString成员变量,怎么样才能在另一个对话框的cpp中操作这个变量呢? 展开
 我来答
cestdio
2012-05-01 · TA获得超过399个赞
知道小有建树答主
回答量:126
采纳率:100%
帮助的人:78.1万
展开全部
首先,全局化控件关联的成员变量是不推荐的,因为控件、对话框的生命周期是很难控制的。因此,最好是通过应用需求,通过对实例的公有成员来引用。
三种情况区别对待。情况一,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)
迷途中的香烟
2012-05-01 · 超过25用户采纳过TA的回答
知道答主
回答量:75
采纳率:0%
帮助的人:52.2万
展开全部
1、直接操作
2、通过成员函数进行操作
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小马野
2012-05-01
知道答主
回答量:88
采纳率:0%
帮助的人:24.6万
展开全部
你按照我说的这样做 ,在第一个个类,假如名称是ConeDlg中 定义一个公有 static CString text;然后在类的外部进行初始化 CString text="xxxxx"; 然后在另一个类CtwoDlg的cpp文件函数中 以是这样使用CString text2=ConeDlg::text;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
施启黎瑞1q
2012-05-01 · TA获得超过101个赞
知道答主
回答量:65
采纳率:0%
帮助的人:38.5万
展开全部
定义一个全局变量再传过去
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式