我是说旁边有桌面等按纽的文件对话框,CFileDialog好象不行!

解决方案 »

  1.   

    试一试下面的代码
    OPENFILENAME OpenFileName;
    TCHAR         szFile[MAX_PATH]      = "\0";
    // char *lpBufPtr;    strcpy( szFile, "请选择一个目录"); CDrStudioApp * pApp=(CDrStudioApp *)AfxGetApp();
    // Fill in the OPENFILENAME structure to support a template and hook.
    OpenFileName.lStructSize       = sizeof(OPENFILENAME);
        OpenFileName.hwndOwner         = this->GetSafeHwnd();// hWnd;
        OpenFileName.hInstance         = pApp->m_hInstance;// g_hInst;
        OpenFileName.lpstrFilter       = NULL;
        OpenFileName.lpstrCustomFilter = NULL;
        OpenFileName.nMaxCustFilter    = 0;
        OpenFileName.nFilterIndex      = 0;
        OpenFileName.lpstrFile         = szFile;
        OpenFileName.nMaxFile          = sizeof(szFile);
        OpenFileName.lpstrFileTitle    = NULL;
        OpenFileName.nMaxFileTitle     = 0;
        OpenFileName.lpstrInitialDir   = NULL;
        OpenFileName.lpstrTitle        = "请选择一个文件夹";
        OpenFileName.nFileOffset       = 0;
        OpenFileName.nFileExtension    = 0;
        OpenFileName.lpstrDefExt       = NULL;
        //OpenFileName.lCustData         = (LPARAM)&sMyData;
    OpenFileName.lpfnHook     = NULL;//ComDlg32DlgProc;
    OpenFileName.lpTemplateName    = NULL;////MAKEINTRESOURCE(IDD_COMDLG32);
        OpenFileName.Flags             = OFN_EXPLORER/* | OFN_ENABLEHOOK | OFN_ENABLETEMPLATE*/|OFN_ENABLESIZING; // Call the common dialog function.
        if (GetOpenFileName(&OpenFileName))
        {
    CString sFileName ;
    sFileName.Format("%s",OpenFileName.lpstrFile);
    AfxMessageBox(LPCTSTR(sFileName));
        }
        else
        {
    //ProcessCDError(CommDlgExtendedError(), hWnd );
    return ;
        }