GSI

'SHBrowseForFolder'에 해당되는 글 2건

  1. 2008.10.08 DirectoryPath (폴더 선택) 선택하기
  2. 2007.12.12 [MFC] 폴더 경로 얻기

void ChoiceDirectoryPath(char* pathFolder)
{
 ASSERT( pathFolder );
 
 sprintf( pathFolder, "" );
 
 //CString m_strDirPath;
 ITEMIDLIST *pidlBrowse;
 char pszPathname[MAX_PATH];
 BROWSEINFO BrInfo;
 BrInfo.hwndOwner = NULL; //GetSafeHwnd();
 BrInfo.pidlRoot = NULL;
 memset( &BrInfo, 0, sizeof(BrInfo) );
 BrInfo.pszDisplayName = (LPSTR)pszPathname;
 BrInfo.lpszTitle = _T("폴더를 선택해 주세요.");
 BrInfo.ulFlags = BIF_RETURNONLYFSDIRS;
 // 다이얼로그 뛰우기
 pidlBrowse = SHBrowseForFolder(&BrInfo);
 if(pidlBrowse != NULL)
 {
  BOOL bSuccess = ::SHGetPathFromIDList(pidlBrowse, (LPSTR)pszPathname);
  if( bSuccess )
  {
   sprintf( pathFolder, "%s", pszPathname );
  }
 }
}

// 사용할때
 char szDirectory[MAX_PATH];
 ZeroMemory( szDirectory, sizeof(szDirectory) );
 ChoiceDirectoryPath( szDirectory );
 if( strlen(szDirectory) <= 0 )
  return 0;

Posted by gsi
:

[MFC] 폴더 경로 얻기

C++ 2007. 12. 12. 14:23 |

사용자 삽입 이미지

 ITEMIDLIST      *pidlBrowse;
 char                  pszPathname[MAX_PATH];

 BROWSEINFO     BrInfo;

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

 memset( &BrInfo, 0, sizeof(BrInfo) );
 BrInfo.pszDisplayName = pszPathname;
 BrInfo.lpszTitle = "선택하고자 하는 폴더를 선택해 주십시오.";
 BrInfo.ulFlags = BIF_RETURNONLYFSDIRS;

 // 다이얼로그 띄우기
 pidlBrowse = SHBrowseForFolder(&BrInfo); 

 if( pidlBrowse != NULL)
 {
  // 패스를 얻어옴
  BOOL bSuccess = ::SHGetPathFromIDList(pidlBrowse, pszPathname);

  if ( bSuccess )
  {
   m_szSafedefaultPath = pszPathname;   //<-- 여기서 값을 입력
   UpdateData(FALSE);
  }
  else
  {
   MessageBox("잘못된 폴더명입니다.", "lol", MB_OKCANCEL|MB_ICONASTERISK );
  }
 }

Posted by gsi
: