이렇게 폴더 선택 다이얼로그가 필요해서 구글링 해서 여기 정리해둠
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 CSetupDlg::OnBnClickedButtonSetPath() { // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. 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; // 사용자정의 함수에 넘겨질 인자로 사용자가 설정하고자 하는 경로를 설정한다. CString strInitPath = SMI.GetSaveFolder().c_str(); BrInfo.lParam = (LPARAM)strInitPath.GetBuffer(); pidlBrowse = ::SHBrowseForFolder(&BrInfo); if(pidlBrowse != NULL){ // 선택된 폴더 경로얻음 SHGetPathFromIDList(pidlBrowse, pszPathname); } }
답글 남기기