如何使用MFC在项目的所有对话框中访问变量?

时间:2010-07-02 07:21:37

标签: c++ mfc

我创建了一个文件打开对话框,它包含一个编辑控件,其变量是包含文件名的“path”。我想要的是在其他对话框中使用此变量的值,但它给出错误“path”是未标记的标识符。 我通过右键单击编辑控件来声明路径,添加一个CString类型的变量。 path变量通过此代码获取其值

class CAboutDlg : public CDialog
{
public:    
CAboutDlg();    
static CString imgname;

在同一个班级,我就像这样使用它

CString image=CAboutDlg::imgname; 
CString szFilename(image);

并通过此代码传递路径值

path=dlg.GetPathName();
UpdateData(FALSE);
CAboutDlg::imgname=path;

但是仍然会在上面的代码中给出CAboutDlg和imgname是未声明的标识符的错误,其中我传递了path的值。我做了同样的事我现在从网站上学到了什么错了?请告诉rwong

2 个答案:

答案 0 :(得分:2)

在对话框关闭之前,将此“路径”传递回CWinApp(通过在CWinApp中实现Get / Set功能)

您的主类派生自CWinApp,实际上是“全局”类(静态类或单例)。您希望放入全局变量的任何内容都可以放入您的CWinApp派生类中。变量可以通过互斥锁保护,监听器,订阅者等可以通过使用此类作为中心基础来实现。

答案 1 :(得分:0)

尝试:

CFileDialog dlg(TRUE);
int result=dlg.DoModal();
if(result==IDOK)
{
    path.SetWindowText( dlg.GetPathName() );
    UpdateData(FALSE);
}

您无法将字符串分配给编辑ctrl。您必须设置存储在编辑控件中的文本。

编辑:

您可以在班级中定义。

 static CString imgname;

您还需要在一个地方定义静态(即不要在标题中执行)。即在相关的cpp文件中(以及类定义之外),你要添加:

CString CAboutDlg::imgname;