还有,怎么设置CFileDialog的当前路径,
是设置哪个m_ofn结构吗?

解决方案 »

  1.   

    是SHGetSpecialFolderLocation()可以取得c:\my document路径.填写 OPENFILENAME m_ofn.
      

  2.   

    #include "shlobj.h" WINSHELLAPI     HRESULT     WINAPI     SHGetSpecialFolderLocation (  HWND hwndOwner, //指定了"所有者窗口",在調用這個函數時可能出現的對話框或訊息框. 
     int nFolder, //決定哪個目錄是待查找目錄 
     LPITEMIDLIST * ppidl pidl地址. //SHGetSpecialFolderLocation把地址寫到pidl. ); 函數功能: 可以幫我們找到windows的Desktop目錄、啟動目錄、我的文檔目錄等.
      部分參數詳細信息: 
    nFolder: 是一個整數id,決定哪個目錄是待查找目錄,它的取值可能是:  
     CSIDL_BITBUCKET  回收站   
     CSIDL_CONTROLS  控制面板   
     CSIDL_DESKTOP  Windows 桌面desktop   
     CSIDL_DESKTOPDIRECTORY  desktop的目錄   
     CSIDL_DRIVES  我的電腦  
     CSIDL_FONTS 字體目錄   
     CSIDL_NETHOOD  網上鄰居   
     CSIDL_NETWORK  網上鄰居virtual folder  
     CSIDL_PERSONAL  我的文檔   
     CSIDL_PRINTERS  印表機   
     CSIDL_PROGRAMS  程式組   
     CSIDL_RECENT  大多數最近打開的文檔列表 
      CSIDL_SENDTO  "發送到"菜單項   
     CSIDL_STARTMENU  任務條啟動菜單項   
     CSIDL_STARTUP  啟動目錄   
     CSIDL_TEMPLATES  臨時文檔  
       BOOL SHGetPathFromIDList(LPCITEMIDLIST pidl,LPSTR pszPath);
    示例代碼:
    LPITEMIDLIST pidl;
    LPMALLOC pShellMalloc;
    char szDir[200];if(SUCCEEDED(SHGetMalloc(&pShellMalloc)))
    {         if(SUCCEEDED(SHGetSpecialFolderLocation(NULL,CSIDL_PERSONAL,&pidl)))        {
                    // 如果成功返回true
                    SHGetPathFromIDList(pidl, szDir);
                    pShellMalloc->Free(pidl);
            }         pShellMalloc->Release();
    }::MessageBox (NULL,szDir,"Path",MB_OK);