父對話框有兩按鈕;ok ,browse
單擊browse會打開一個子對話框(CFileDialog),將子對話框中選中的文件名返回給父對話框,在單擊ok 按鈕時做判斷處理.
如何實現?

解决方案 »

  1.   

    CFileDialog dlg;
    dlg.DoModal();当文件对话框用 OK 关闭后,用
    dlg.m_ofn
    取得你想要的值,结构如下
    typedef struct tagOFN { 
      DWORD         lStructSize; 
      HWND          hwndOwner; 
      HINSTANCE     hInstance; 
      LPCTSTR       lpstrFilter; 
      LPTSTR        lpstrCustomFilter; 
      DWORD         nMaxCustFilter; 
      DWORD         nFilterIndex; 
      LPTSTR        lpstrFile; 
      DWORD         nMaxFile; 
      LPTSTR        lpstrFileTitle; 
      DWORD         nMaxFileTitle; 
      LPCTSTR       lpstrInitialDir; 
      LPCTSTR       lpstrTitle; 
      DWORD         Flags; 
      WORD          nFileOffset; 
      WORD          nFileExtension; 
      LPCTSTR       lpstrDefExt; 
      LPARAM        lCustData; 
      LPOFNHOOKPROC lpfnHook; 
      LPCTSTR       lpTemplateName; 
    #if (_WIN32_WINNT >= 0x0500)
      void *        pvReserved;
      DWORD         dwReserved;
      DWORD         FlagsEx;
    #endif // (_WIN32_WINNT >= 0x0500)
    } OPENFILENAME, *LPOPENFILENAME; 
      

  2.   

    先在父对话框A里设置一个文件名变量m_strFileName;在父对话框A的Onbrowse()函数里
    {
         CFileDialog B;
         B........//其他的操作
         if (B.Domodal() == IDOK)
           m_strFileName = B.GetFileName(); //这里就得到了你的子对话框里面选定的文件名了,        
                                           // 至于还需要得到其他的什么信息,都可以得到,
                                           //查看msdn的CFileDialog帮助吧
    }A::OmOK()
    {
      //对类里面的m_strFileName随便做什么处理
    }