C++학습:파일 대화 상자 열기 및 폴 더 열기 대화 상자

다양한 응용 프로그램 때문에 파일 대화 상 자 를 열 거나 폴 더 대화 상 자 를 열 거나 둘 다 사용 해 야 합 니 다.지금 이 상황 을 만 나 이미 해결 되 었 으 니,이 박문 을 특별히 써 라.
    1.파일 대화 상 자 를 여 는 데 자주 사용 되 는 방법 은 시스템 의 CFileDialog 를 사용 하 는 것 입 니 다.여기 서 또 다른 방법 은 OPEnfileNAME 라 는 구조 체 와 GetOpenFileName()이라는 함 수 를 사용 하여 단일 파일 이나 다 중 파일 을 선택 할 수 있 습 니 다.코드 는 다음 과 같 습 니 다.

  
  
  
  
  1. TCHAR szBuffer[MAX_PATH] = {0}; 
  2. OPENFILENAME ofn= {0}; 
  3. ofn.lStructSize = sizeof(ofn); 
  4. ofn.hwndOwner = m_hWnd; 
  5. ofn.lpstrFilter = _T("Exe (*.exe)\0*.exe\0 (*.*)\0*.*\0");//  
  6. ofn.lpstrInitialDir = _T("D:\\Program Files");//  
  7. ofn.lpstrFile = szBuffer;//  
  8. ofn.nMaxFile = sizeof(szBuffer)/sizeof(*szBuffer); 
  9. ofn.nFilterIndex = 0; 
  10. ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_EXPLORER ;// OFN_ALLOWMULTISELECT
  11. BOOL bSel = GetOpenFileName(&ofn); 

이렇게 하면 파일 선택 대화 상 자 를 열 수 있 습 니 다.필요 한 파일 을 선택 할 수 있 습 니 다.szBuffer 는 선택 한 파일 경 로 를 저장 합 니 다.
2.폴 더 대화 상 자 를 여 는 방법:

  
  
  
  
  1. TCHAR szBuffer[MAX_PATH] = {0}; 
  2. BROWSEINFO bi; 
  3. ZeroMemory(&bi,sizeof(BROWSEINFO)); 
  4. bi.hwndOwner = NULL; 
  5. bi.pszDisplayName = szBuffer; 
  6. bi.lpszTitle = _T(" :"); 
  7. bi.ulFlags = BIF_RETURNFSANCESTORS; 
  8. LPITEMIDLIST idl = SHBrowseForFolder(&bi); 
  9. if (NULL == idl) 
  10.     return
  11. SHGetPathFromIDList(idl,szBuffer); 

위의 코드 는 선택 폴 더 대화 상 자 를 열 수 있 습 니 다.
3.파일 이나 폴 더 대화 상자 의 호출 을 선택 하 십시오:

  
  
  
  
  1. TCHAR szBuffer[MAX_PATH] = {0}; 
  2. BROWSEINFO bi; 
  3. ZeroMemory(&bi,sizeof(BROWSEINFO)); 
  4. bi.hwndOwner = NULL; 
  5. bi.pszDisplayName = szBuffer; 
  6. bi.lpszTitle = _T(" :"); 
  7. bi.ulFlags = BIF_BROWSEINCLUDEFILES; 
  8. LPITEMIDLIST idl = SHBrowseForFolder(&bi); 
  9. if (NULL == idl) 
  10.     return
  11. SHGetPathFromIDList(idl,szBuffer); 

위의 코드 를 사용 하면 필요 에 따라 파일 이나 폴 더 를 선택 할 수 있 습 니 다.빨리 와 서 해 봐!!!

좋은 웹페이지 즐겨찾기