我创建了一个文件打开对话框,它包含一个编辑控件,其变量是包含文件名的“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
答案 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;