반응형
int CALLBACK BrowseCallback(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
CHAR lpszDir[255];
switch(uMsg)
{
case BFFM_INITIALIZED:
SendMessage(hwnd, BFFM_SETSELECTION, TRUE, lpData);
break;
case BFFM_SELCHANGED:
if(SHGetPathFromIDList((LPITEMIDLIST)lParam, lpszDir))
SendMessage(hwnd, BFFM_SETSTATUSTEXT,0, (LPARAM)lpszDir);
break;
}
return 0;
}
//원하는 이벤트 핸들러에 추가
ITEMIDLIST *pidlBrowse;
WCHAR pszPathname[MAX_PATH];
BROWSEINFO BrInfo;
BrInfo.hwndOwner = GetSafeHwnd();
BrInfo.pidlRoot = NULL;
CString str = "c:\\depth"; //초기 디렉토리 설정
LPCTSTR lpszDefaultFolder = str;
memset(&BrInfo, 0, sizeof(BrInfo));
BrInfo.pszDisplayName = (LPSTR)pszPathname;
BrInfo.lpszTitle = _T("Select directory");
BrInfo.ulFlags = BIF_RETURNONLYFSDIRS; //폴더만 선택 가능
BrInfo.ulFlags = BIF_BROWSEINCLUDEFILES; //디렉토리와 파일까지 선택가능
BrInfo.lParam = (LPARAM)lpszDefaultFolder;
BrInfo.lpfn = BrowseCallback;
pidlBrowse = ::SHBrowseForFolder(&BrInfo);
if (pidlBrowse != NULL) // 폴더 선택이 완료되면
{
//Get Path
SHGetPathFromIDList(pidlBrowse, (LPSTR)pszPathname);
m_strFolderName.Format("%s",pszPathname);
}
반응형
'Programming > MFC-C++' 카테고리의 다른 글
| 구조체 sizeof 의 오작동 (0) | 2013.04.26 |
|---|---|
| [C++, C] 파일의 중간 부분 데이터 변경하기 (0) | 2013.04.25 |
| CFileDialog 불러오기 저장하기 (1) | 2013.04.19 |
| Wave 출력 및 waveOutClose 함수, Callback 함수와의 연동 (0) | 2013.04.18 |
| IK SVM (Fast Intersection / Additive Kernel SVMs) (0) | 2013.04.08 |