//
// 폴더선택 다이얼로그를 구현하기 위해 사용되는 사용자정의 Callback 함수
//
int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
	switch (uMsg) {
		// 폴더선택 다이얼로그의 초기화가 끝난 경우
	case BFFM_INITIALIZED:
		SendMessage(hwnd, BFFM_SETSELECTION, TRUE, lpData);
		break;
	}
	return 0;
}

//
// 폴더선택 다이얼로그
//
void SelectFolder()
{
	ITEMIDLIST	*pidlBrowse;
	WCHAR		pszPathname[MAX_PATH];

	BROWSEINFO	BrInfo;
	BrInfo.hwndOwner = GetSafeHwnd();
	BrInfo.pidlRoot = NULL;

	memset(&BrInfo, 0x00, sizeof(BrInfo));
	BrInfo.pszDisplayName = pszPathname;
	BrInfo.lpszTitle = _T("Select folder");
	BrInfo.ulFlags = BIF_RETURNONLYFSDIRS;

	// 이벤트에 대한 사용자정의 함수
	BrInfo.lpfn = BrowseCallbackProc;

	// 사용자정의 함수에 넘겨질 인자로 사용자가 설정하고자 하는 경로를 설정한다.
	// 예를들어 초기폴더경로를 C드라이브로 설정하는 경우
	CString strInitPath = _T("C:\\");
	BrInfo.lParam = (LPARAM)strInitPath.GetBuffer();

	pidlBrowse = ::SHBrowseForFolder(&BrInfo);
	if(pidlBrowse != NULL)
	{
		// 선택된 폴더 경로얻음
		SHGetPathFromIDList(pidlBrowse, pszPathname);
		
		// 경로(pszPathname)를 이용하여 이후작업 추가
	}
}


'개발이야기 > MFC' 카테고리의 다른 글

로컬 IP주소 얻기  (0) 2012.05.17
유니코드 ↔ 안시 변환함수  (0) 2012.05.16
MFC Control 오픈소스 모음  (0) 2012.05.13
3D 다이아몬드  (0) 2012.05.13
MD5 Checksum 모듈  (0) 2012.05.13