본문 바로가기

코드^학습/메모한 지식

[C++]SHBrowseForFolder함수

아시는 분들은 아시겠지만

모르시는 분들은 모르시는!


FileOpen할 때 폴더를 고르고싶다면 사용하는 함수입니다.


그 동안은 항상 파일만 필요했기에 CFileDialog만 사용했는데, 오늘은 하위폴더 탐색때문에 하위폴더가 있는 상위폴더 선택이 필요했습니다.


그래서 CFileDialog을 가지고 폴더를 선택하는 방법을 구글링하기 시작했는데...


아...모르겠다!


제가 못 찾은게 99%일거 같지만 일단 눈에 안 띄는게...(저에겐 1~2시간이 주어졌어요...그마저도 최종적으론 도합 3시간 걸렸지만...ㅜㅜ)


아무튼 여러분은 이런고생을 들하고 시간을 아끼시길 바랍니다...


간단한 사용예 볼게요


BROWSEINFO   bi; 

LPITEMIDLIST  idl;

TCHAR szPathname[MAX_PATH] = {0, };


ZeroMemory(&bi,sizeof(BROWSEINFO));

bi.hwndOwner   =   this->m_hWnd; 

bi.pszDisplayName =  szPathname;  // 선택된 디렉토리명 저장 

bi.lpszTitle = _T("폴더를 선택해 주세요"); 

bi.ulFlags  =  BIF_EDITBOX    // 선택된 디렉토리명을 표시하고 편집할 수 있는 창

| 0x0040;            // 새로운 디렉토리를 만들수 있는 버튼 추가 


idl = SHBrowseForFolder(&bi);

if ( idl )

{

SHGetPathFromIDList(idl, szPathname);

m_strDirPath.Format(_T("%s"), szPathname);

}


네 이렇게 쓰시면 됩니다.


그러면 다이얼로그가 퐉 떠요 이렇게요



즐거운 코딩하세요 


MSDN링크 : https://msdn.microsoft.com/ko-kr/library/windows/desktop/bb762115(v=vs.85).aspx