기본 콘텐츠로 건너뛰기

라벨이 SHBrowseForFolder인 게시물 표시

SHBrowseForFolder 디폴트 경로 설정하기...

출처 : http://codeguru.earthweb.com/mfc/comments/5889.shtml [[ Starting SHBrowseForFolder from arbitrary directory is easy ]] This is very easy... // this is how we set the initial directory int CALLBACK MyBrowseCallbackProc( HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData ) { switch (uMsg) { case BFFM_INITIALIZED: ::SendMessage( hwnd, BFFM_SETSELECTION, TRUE, lpData ); break; } return 0; } void BrowseForDirectory( CWnd* pWndOwner, LPCTSTR title, CString& folderName ) { TCHAR path[MAX_PATH]; LPTSTR pFolderName = folderName.GetBuffer(folderName.GetLength()); BROWSEINFO browse; browse.hwndOwner = pWndOwner->GetSafeHwnd(); browse.pidlRoot = NULL; browse.pszDisplayName = pFolderName; browse.lpszTitle = title; browse.ulFlags = BIF_RETURNONLYFSDIRS; browse.lpfn = MyBrowseCallbackProc; browse.lParam = (LPARAM)pFolderName; LPITEMIDLIST pidl = SHBrowseForFolder(&browse); folderName.Relea...

SHBrowseForFolder로 폴더 브라우징 하는 방법.

나만의 노트' ' | 나츠히메 http://blog.naver.com/iizumi/30002116144 폴더만 브라우징 해서 경로를 가져오는건데요. //---------------------------------------------------- bool MyApp::OpenPath( CString& outpath ) { char path[MAX_PATH]; memset(path,0,sizeof(char) * MAX_PATH ); BROWSEINFOA bi; bi.hwndOwner = GetSafeHwnd(); bi.pidlRoot = NULL; bi.lpszTitle = "경로를 입력해주세요"; bi.pszDisplayName = path; bi.ulFlags = BIF_RETURNONLYFSDIRS; bi.lpfn = NULL; LPITEMIDLIST idlist = SHBrowseForFolderA( &bi ); if ( idlist ) { SHGetPathFromIDListA( idlist, path ); outpath = path; return true; } outputpath = ""; return false; } //---------------------------------------------------- 물론 idlist가 NULL이면 취소를 했다는 거죵. 좀 더 자세한건 MSDN에서 SHBrowseForFolder 로 검색해 보시면 됩니당. 이거랑 이전에 올린 CFileFinder를 이용하면.. 특정 폴더를 지정하고, 그 폴더의 경로를 이용해, 하위 폴더의 파일목록을 만든다든지 검색을 한다든지 유용하게 쓰실 수 있습니당.. - .-