描述:
当我调用SHBrowseForFolder函数打开一个文件夹时,我想目录为我上次出现目录。
即与CFileDialog一样,当我上次打开的目录为:C:\XX时,这次打开也是C:\XX目录。

解决方案 »

  1.   

    GetCurrentDirectory得到当前路径打开时设置成当前路径的可以了
      

  2.   

    static int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
    {
    switch(uMsg)   

    case BFFM_INITIALIZED:
    {
    CString strPath = AfxGetApp()->GetProfileString(_T("Save"), _T("Path"));
    ::SendMessage(hwnd, BFFM_SETSELECTION, TRUE, (LPARAM)strPath.GetBuffer(0));

    break;
    default: break;
    }
    return 0;
    }TCHAR szFilePath[MAX_PATH] = {0};
    BROWSEINFO bsInfo;
    ::ZeroMemory(&bsInfo, sizeof(BROWSEINFO));
    bsInfo.hwndOwner      = this->m_hWnd;
    bsInfo.pszDisplayName = szFilePath;
    bsInfo.ulFlags        = BIF_RETURNFSANCESTORS|BIF_RETURNONLYFSDIRS;
    bsInfo.lpfn           = BrowseCallbackProc;
    LPITEMIDLIST pIDList  = SHBrowseForFolder(&bsInfo);
    if(pIDList == NULL)      
    return 0;
    SHGetPathFromIDList(pIDList, szFilePath);
    LPMALLOC lpMalloc;
    if(FAILED(SHGetMalloc(&lpMalloc)))
    return 0;
    lpMalloc->Free(pIDList);
    AfxGetApp()->WriteProfileString(_T("Save"), _T("Path"), szFilePath);
      

  3.   

    http://blog.csdn.net/xyzhaopeng/article/details/5277025
    看看常委的blog