C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[66583] Re:폴더 경로 지정을 하고 싶은데요...
박우성 [solgari] 2002 읽음    2012-03-12 14:43
C++ 기본 컴포넌트는 지원을 하지 않지만, JVCL 등의 여러 컴포넌트에서 폴더 선택 다이얼로그를 지원합니다만, 컴포넌트를 설치해야 되고, 귀찮죠.

제가 예전에 만든함수인데, 응용해서 사용하면 됩니다.

#include 

bool ShowDirSelectDlg( HWND hWndOwner, wchar_t *szDir )
{
	LPMALLOC ShellMalloc;
	LPITEMIDLIST idRoot, idBrowse;
	BROWSEINFO BrowseInfo;
	wchar_t* shBuff;
	wchar_t szPath[MAX_PATH];

	szPath[0] = '\0' ;
	if (SHGetMalloc(&ShellMalloc) == NOERROR) {
		SHGetSpecialFolderLocation(0, CSIDL_DRIVES, &idRoot);
		shBuff = (wchar_t*)ShellMalloc->Alloc(MAX_PATH);

		if (shBuff){
			BrowseInfo.hwndOwner      = hWndOwner;
			BrowseInfo.pidlRoot       = idRoot;
			BrowseInfo.pszDisplayName = shBuff;
			BrowseInfo.lpszTitle      = L"아래 목록에서 원하는 폴더를 선택하세요." ;
			BrowseInfo.ulFlags        = BIF_DONTGOBELOWDOMAIN;
			BrowseInfo.lpfn           = NULL;
			BrowseInfo.lParam         = 0;

			idBrowse = SHBrowseForFolder(&BrowseInfo);

			if (idBrowse) SHGetPathFromIDList(idBrowse, szPath);

		}
		ShellMalloc->Free(shBuff);
		ShellMalloc->Free(idBrowse);
		ShellMalloc->Free(idRoot);
	}

	ShellMalloc->Release();

	int nLen = wcslen( szPath );
	if( nLen > 0 ){
		wcscpy( szDir, szPath );
		if( szPath[nLen-1] != '\\' ) wcscat( szDir, L"\\");
		return true;
	}else{
		return false;
	}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
	wchar_t szPath[MAX_PATH];

	if( ShowDirSelectDlg( Handle, szPath ) )
		Caption = szPath;
}



경로지정 님이 쓰신 글 :
: 경로지정 해야하는 일이 생겼는데요....
:
: 그래서 여기저기 찾아보니 DirectoryListBox 라고 있던데...
:
: UI도 그렇고 좀 쓰기도 불편하고 그렇더라구요..
:
: 그런데 빌더에서 경로 지정 해줄때 보니 사용자가 사용하기 쉽게 경로 지정 할 수 있는
:
: 다이알로그 창이 뜨더라구요.. 그래서 그런데
:
: 그 다이알로그 창을 뛰우려면 어떻게 해야하나요??
:
: 그리고 경로 값을 어떻게 받아오는지도 설명 부탁드립니다 ^^
:
: 첨부파일에 해당 다이알로그 창 그림이 있습니다. 참고하세요~~

+ -

관련 글 리스트
66568 폴더 경로 지정을 하고 싶은데요... 경로지정 1193 2012/03/10
66585     SelectDirectory 라는 폴더 선택 dialog를 뛰워주는 함수가 있습니다. 장성호 1491 2012/03/12
66613         Re:SelectDirectory 라는 폴더 선택 dialog를 뛰워주는 함수가 있습니다. 경로지정 1687 2012/03/14
66620             Re:Re:SelectDirectory 라는 폴더 선택 dialog를 뛰워주는 함수가 있습니다. 장성호 2086 2012/03/14
66629                 Re:Re:Re:답변 정말 감사합니다 ^^ 경로지정 1141 2012/03/14
66583     Re:폴더 경로 지정을 하고 싶은데요... 박우성 2002 2012/03/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.