bool BrowseForFolder(LPBROWSEINFO browseInfo, CSysString &resultPath) { NWindows::NCOM::CComInitializer comInitializer; LPITEMIDLIST itemIDList = ::SHBrowseForFolder(browseInfo); if (itemIDList == NULL) return false; CItemIDList itemIDListHolder; itemIDListHolder.Attach(itemIDList); return GetPathFromIDList(itemIDList, resultPath); }
CString BrowseForFolder(HWND hwnd) { TCHAR szDisplayName[MAX_PATH+1] = _T("\0"); BROWSEINFO bi = { hwnd, NULL, szDisplayName, _T("フォルダ選択"), BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE, NULL, 0, 0 }; CItemIDList idl; idl.Attach( ::SHBrowseForFolder(&bi) ); return idl.GetPath(); }
bool BrowseForFolder(LPBROWSEINFOW browseInfo, UString &resultPath) { NWindows::NCOM::CComInitializer comInitializer; SHBrowseForFolderWP shBrowseForFolderW = (SHBrowseForFolderWP) ::GetProcAddress(::GetModuleHandleW(L"shell32.dll"), "SHBrowseForFolderW"); if (shBrowseForFolderW == 0) return false; LPITEMIDLIST itemIDList = shBrowseForFolderW(browseInfo); if (itemIDList == NULL) return false; CItemIDList itemIDListHolder; itemIDListHolder.Attach(itemIDList); return GetPathFromIDList(itemIDList, resultPath); }
CString CMainPropertyPage2::BrowseForFolder(const CString& strTitle, const CString& strNowPath) { TCHAR szDisplayName[MAX_PATH] = _T("\0"); BROWSEINFO bi = { m_hWnd, NULL, szDisplayName, LPCTSTR(strTitle), //+++ strTitle.GetBuffer(0), //+++ BIF_RETURNONLYFSDIRS, &BrowseCallbackProc, (LPARAM) LPCTSTR(strNowPath), //+++ (LPARAM)strNowPath.GetBuffer(0), 0 }; CItemIDList idl; idl.Attach( ::SHBrowseForFolder(&bi) ); return idl.GetPath(); }