up

解决方案 »

  1.   

    用MFC提供的CFileDialog较为方便
      

  2.   

    BROWSEINFO binfo;
                binfo.hwndOwner = m_hWnd;
                binfo.pidlRoot = lpItemIdList;
                binfo.pszDisplayName = szSelectPath;            
                binfo.lpszTitle = _T("Select Location:");
                binfo.ulFlags = BIF_RETURNONLYFSDIRS;
                binfo.lpfn = NULL;
                binfo.lParam = 0;            LPITEMIDLIST lpSelectedItemIdList = ::SHBrowseForFolder(&binfo);            if( lpSelectedItemIdList )
                 {
                    LPSHELLFOLDER lpshf;
           HRESULT hRs = SHGetDesktopFolder(&lpshf);                if ( SUCCEEDED(hRs) )
                    {
                         _GetFolderName(lpshf, lpSelectedItemIdList,SHGDN_FORPARSING, szSelectPath);                     lpshf->Release();                     m_szPathSaveTo = szSelectPath;                     UpdateData(FALSE);
                    }
      

  3.   

    if( lpSelectedItemIdList )
       {
          LPSHELLFOLDER lpshf;
          HRESULT hRs = SHGetDesktopFolder(&lpshf);       if ( SUCCEEDED(hRs) )
           {
            _GetFolderName(lpshf,lpSelectedItemIdList,SHGDN_FORPARSING,szSelectPath);        lpshf->Release();        m_szPathSaveTo = szSelectPath;        pdateData(FALSE);
          }
        }这个改一下:
                 if( lpSelectedItemIdList )
                 {
                   char szSelectPath[MAX_PATH];               SHGetPathFromIDList(lpSelectedItemIdList,(LPTSTR)szSelectPath);               m_szPathSaveTo = szSelectPath;               UpdateData(FALSE);
                  }
      

  4.   

    CFileDialog a(..);
    a.domomal();
      

  5.   

    我在一个按扭的消息函数里面这样写:CFileDialog dlg( TRUE,_T("AVI"),_T("*.AVI"),
             OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
    _T("Animation (*.AVI)|*.AVI|")); if( dlg.DoModal()==IDOK )
    {
    CString m_cstrFileName = dlg.GetPathName();
    UpdateData(FALSE);
              }vc编译报错:
    error C2512: 'CFileDialog' : no appropriate default constructor available不知道为什么?
      
      

  6.   

    CFileDialog dlg(TRUE, NULL, NULL,OFN_OVERWRITEPROMPT, 
                "txt files(*.txt)|*.txt|");
    CFile file;
    if (IDOK==dlg.DoModal())
    {
        CString szPath,str;
        szPath=dlg.GetFileName();
        ::SetFileAttributes(szPath,FILE_ATTRIBUTE_NORMAL);
        file.Open(szPath,CFile::modeWrite | CFile::shareDenyNone);
      

  7.   

    char szFilters[]="MyType Files (*.dwg)|*.dwg|All Files (*.*)|*.*||";


    CFileDialog filedlg (TRUE, "dwg", "*.dwg",
    OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, szFilters, this);

        if(filedlg.DoModal()==IDOK)
    {
    CString strpath=filedlg.GetPathName();
        }
      

  8.   

    OPENFILENAME ofn;       // common dialog box structure
    char szFile[260];       // buffer for file name
    HWND hwnd;              // owner window
    HANDLE hf;              // file handle// Initialize OPENFILENAME
    ZeroMemory(&ofn, sizeof(OPENFILENAME));
    ofn.lStructSize = sizeof(OPENFILENAME);
    ofn.hwndOwner = hwnd;
    ofn.lpstrFile = szFile;
    ofn.nMaxFile = sizeof(szFile);
    ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0";
    ofn.nFilterIndex = 1;
    ofn.lpstrFileTitle = NULL;
    ofn.nMaxFileTitle = 0;
    ofn.lpstrInitialDir = NULL;
    ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;// Display the Open dialog box. if (GetOpenFileName(&ofn)==TRUE) 
        hf = CreateFile(ofn.lpstrFile, GENERIC_READ,
            0, (LPSECURITY_ATTRIBUTES) NULL,
            OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
            (HANDLE) NULL);
      

  9.   

    CString filename;
     static char BASED_CODE fliter[]="txt files(*.txt)|*.txt|all files(*.*)|*.*||";
     CFileDialog   dc(TRUE, "txt", NULL, NULL, fliter); 
     dc.m_ofn.lpstrTitle="files open";  // 打开框的名字
     if(dc.DoModal() == IDOK)
     {     
        filename = dc.GetPathName();
        MessageBox(filename);  
    }
      

  10.   

    我把你们几个所有的各种代码都试了一遍,
    还是那个错误:
    error C2512: 'CFileDialog' : no appropriate default constructor available
    点击这个错误,光标跳到父对话框的建构函数处:CAddSubfunctionDlg::CAddSubfunctionDlg(CWnd* pParent /*=NULL*/)
    : CDialog(CAddSubfunctionDlg::IDD, pParent)是不是跟父对话框有关。我是在父对话框里加一个按扭,点击这个按扭的时候
    就出现那个选择文件的对话框。不知应该改哪个地方?
      

  11.   

    我也有类似的程序就可以呀
    SetDlg是一个CDialog派生的类void SetDlg::OnButtonLoadset() 
    {
    CFileDialog f(TRUE,"*.txt","set",OFN_OVERWRITEPROMPT,"设置文件(*.ini)|*.ini||",NULL);
    //生成标准文件对话框
    if(f.DoModal()==IDOK)
    {
    CString s=f.GetFileName();
    LoadSettings(s);
    }
    }