SHBrowseForFolder指定初始化显示的目录

int BrowseCallbackProc(HWND hwnd, UINT msg, LPARAM lp, LPARAM pData) 
{ 
    // m_strInitDir为初始化目录
    if (!m_strInitDir.empty())
    {
        if (msg == BFFM_INITIALIZED) 
        { 
            ::SendMessage(hwnd,BFFM_SETEXPANDED,TRUE,(LPARAM)m_strInitDir.c_str());
        } 
        else if (msg == BFFM_SELCHANGED && bFirst)
        {
       bFirst = false; ::SendMessage(hwnd,BFFM_SETSELECTION,TRUE,(LPARAM)m_strInitDir.c_str()); } }
return 0; } void ShowGetDirectoryDialog(HWND m_handle) {
  bFirst = true; wchar_t szDir[MAX_PATH
/2]; BROWSEINFO bi; ITEMIDLIST* pidl = NULL; bi.hwndOwner = m_handle; bi.pidlRoot = NULL; bi.pszDisplayName = szDir; bi.lpszTitle = L"请选择文件夹"; bi.ulFlags = BIF_NEWDIALOGSTYLE | BIF_RETURNFSANCESTORS; bi.lpfn = BrowseCallbackProc; // 回调函数,状态改变时调用该函数 bi.lParam = 0; bi.iImage = 0; pidl = SHBrowseForFolder(&bi); }
原文地址:https://www.cnblogs.com/hui277/p/3412361.html