兄弟,我刚修改了一个,基于CFileDialog的,很方便的实现了对文件夹的选择,绝对好用。给Email。我发一个给你。

解决方案 »

  1.   

    [email protected]  thank you 
      

  2.   


    #include <windows.h>
    #include <shlobj.h>int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, 
                                     LPARAM lParam, LPARAM lpData);// To demonstrate the problem, remove the comment characters from the
    // following line:
    //#define SHOW_PROBLEMint WINAPI WinMain( HINSTANCE hInst, HINSTANCE hPrevInst, 
                         LPSTR lpszCmdLine, int nCmdShow)
    {
       BROWSEINFO bi;
       ZeroMemory(&bi, sizeof(bi));   TCHAR szDisplayName[MAX_PATH];
       szDisplayName[0] = '\0';   bi.hwndOwner = NULL;
       bi.pidlRoot = NULL;
       bi.pszDisplayName = szDisplayName;
       bi.lpszTitle = TEXT("Browsing");
       bi.ulFlags = BIF_EDITBOX | BIF_VALIDATE ;
    #ifndef SHOW_PROBLEM
       bi.lpfn = BrowseCallbackProc;
    #endif
       bi.lParam = NULL;
       bi.iImage = 0;   LPITEMIDLIST pidl = SHBrowseForFolder(&bi);   if (NULL != pidl)
          MessageBox(NULL, szDisplayName, TEXT("SHBrowseFolder"), MB_OK);
       else
          MessageBox(NULL, TEXT("SHBrowseFolder failed"), TEXT("SHBrowseFolder"), MB_OK);   return 0;
    }
    #define DONT_DISMISS 1int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, 
                                     LPARAM lParam, LPARAM lpData)
    {
       switch (uMsg)
       {
       case BFFM_VALIDATEFAILED:
          return DONT_DISMISS;
       default:
          return 0;
       }