希望能够像CFileDialog一样,在对话框销毁后,仍然能够通过成员函数GetFilePath()之类的传递字符串。静态成员变量吗?还是有其它办法?不想通过指针传递,这样每次调用对话框还得绑定个数组地址,太烦。

解决方案 »

  1.   

    保存在成员变量即可。对话框关闭时,给变量赋值。public:
        CString strRet;
    CDlg_DlgX dlgx;
    int iMsg=dlgx.DoModal(); //打开DlgX对话框
    if(iMsg==IDOK) //确定
    {
    MessageBox(dlgx.strRet,L""); //返回值
    }
      

  2.   

    其实操纵一个全局的szBuffer[200]还是很好用的
    这样所有的窗口都可以用他来传递信息
    另外,在多线程情况下要考虑临界资源的抢夺
      

  3.   

    我也看好这种方式,但是有个问题哈,比如我定义一个成员变量// .h file
    private:   static CString szSelectedPath;//.cpp file
    //然后在类的成员函数中访问它,
    void CMyFileDlg::OnNMDblclkList2(NMHDR *pNMHDR, LRESULT *pResult) //用户双击了右侧的listctrl某个
    选项
    {
      ...
      szSelectedPath = ...; //会直接提示无法解析的xxxxx
    }
      

  4.   

    static CString szSelectedPath;
    类的静态成员是要和全局变量一起初始化的
    你要在类定义的外部对其初始化才行