ITEMIDLIST *pildBrowse;
char pszPathname[MAX_PATH];
LPITEMIDLIST pidl = NULL;
BROWSEINFO bInfo;
ZeroMemory( &bInfo, sizeof(BROWSEINFO) );
SHPathToPidl( CSIDL_DESKTOP, &pidl ); // 루트 디렉토리 설정 부분.
bInfo.hwndOwner = GetSafeHwnd();
bInfo.pidlRoot = pidl;
bInfo.pszDisplayName = pszPathname;
bInfo.lpszTitle = "Please Select Directory....";
bInfo.lpfn = BrowseCallbakProc;
// 콜백함수가 필요없다면 NULL이나 지움. 위의 static int 함수 필요 없어짐
// 콜백함수가 필요없다면 NULL이나 지움. 위의 static int 함수 필요 없어짐
bInfo.ulFlags = BIF_RETURNONLYFSDIRS | BIF_EDITBOX | BIF_VALIDATE ;
// 디렉토리만 설정가능하도록 하였습니다... 플래그 설정은 맨 아래 참조하세요, 또는 MSDN
// 디렉토리만 설정가능하도록 하였습니다... 플래그 설정은 맨 아래 참조하세요, 또는 MSDN
if( pildBrowse != NULL )
{
SHGetPathFromIDList(pildBrowse, pszPathname);
m_strDownFolder = (LPCTSTR)pszPathname; // 선택한 폴더 또는 파일… 이 부분을 목적에 맞게 수정.
UpdateData(FALSE);
}
}
HRESULT CNet_ProgDlg::SHPathToPidl( LPCTSTR szPath, LPITEMIDLIST* ppidl ) // 여기는 클레스 이름 바꾸어야 함.
{
LPSHELLFOLDER pShellFolder = NULL;
OLECHAR wszPath[MAX_PATH] = {0};
ULONG nCharsParsed = 0;
HRESULT hr = SHGetDesktopFolder( &pShellFolder );
if( FAILED(hr) ) return FALSE;
MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED, szPath, -1, wszPath, MAX_PATH );
hr = pShellFolder->ParseDisplayName( NULL, NULL, wszPath, &nCharsParsed, ppidl, NULL );
pShellFolder->Release();
return hr;
}
/*
// Browsing for directory.
#define BIF_RETURNONLYFSDIRS 0x0001 // For finding a folder to start document searching
#define BIF_DONTGOBELOWDOMAIN 0x0002 // For starting the Find Computer
#define BIF_STATUSTEXT 0x0004
#define BIF_RETURNFSANCESTORS 0x0008
#define BIF_EDITBOX 0x0010
#define BIF_VALIDATE 0x0020 // insist on valid result (or CANCEL)
#define BIF_BROWSEFORCOMPUTER 0x1000 // Browsing for Computers.
#define BIF_BROWSEFORPRINTER 0x2000 // Browsing for Printers
#define BIF_BROWSEINCLUDEFILES 0x4000 // Browsing for Everything
*/
-bInfo.ulFlags 플래그
-bInfo.ulFlags 플래그
BIF_BROWSEFORCOMPUTER : 네트워크의 컴퓨터만 선택가능
BIF_BROWSEFORPRINTER : 프린터만 선택가능
BIF_BROWSEINCLUDEFILES : 파일도 표시
BIF_DONTGOBELOWDOMAIN : 네트워크의 컴퓨터를 표시하지 않는다
BIF_EDITBOX : 에디트 박스를 표시한다
BIF_RETURNFSANCESTORS : 네트워크의 컴퓨터만 선택가능
BIF_RETURNONLYFSDIRS : 폴더만 선택가능
BIF_STATUSTEXT : 스테이터스 텍스트를 표시한다
BIF_VALIDATE : 부정 입력시에, BFFM_VALIDATEFAILED 이벤트
댓글 없음 :
댓글 쓰기