1. 하나의 파일 경로를 읽기
1 무효화 (); 2 3 CFileDialog에 DLG (TRUE, NULL, NULL, OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_READONLY, 4 텍스트 ( " 지원 유형 (* .JPG,.. * PNG로 * GIF * BMP,. ...) | * .JPG, * . .PNG * GIF;. * BMP | 티파니 (.. * 티파니, * TIF) | * 티파니,. * TIF | 모든 파일 (*. *) | * ||. " ), NULL); 5 dlg.m_ofn.nFilterIndex = 1 ; 6 dlg.m_ofn.hwndOwner = m_hWnd; 7 dlg.m_ofn.lStructSize = 를 sizeof (OPENFILENAME); 8 dlg.m_ofn.lpstrTitle = TEXT ( " 시작 이미지 ... \ 0 " ); 9 = dlg.m_ofn.nMaxFile MAX_PATH; 10 IF (dlg.DoModal () == IDOK) . 11 { 12은 m_Path = dlg.GetPathName (); 13이다 m_isOpen = ; TRUE 14 ; 때문에 updateData (FALSE) 15 } 16 다른 . 17 창 , 18는 // 왼쪽 사진은 이미지 디스플레이 제어 (19) 의 char *에 , S_PATH 20 ; USES_CONVERSION 21 S_PATH = T2A (m_path)를;
2. 여러 파일 이름을 읽어
1 개 벡터 <CString을> fileDict;
CFileDialog에 DLG (TRUE, _T ( " * " ), NULL, OFN_ALLOWMULTISELECT | OFN_FILEMUSTEXIST, _T ( " 所有文件파일 (* *) | * ||.. " ), NULL); 2 DWORD의 MAXFILE = 500 * MAX_PATH; // 最多打开500个文件 3 dlg.m_ofn.nMaxFile = MAXFILE; 4 TCHAR * = BUF 새로운 TCHAR [MAXFILE]; 5 memset 함수 (BUF, 0 , 는 sizeof (TCHAR) * MAXFILE); 6 dlg.m_ofn.lpstrFile = (BUF); 7 8 INTiReturn = dlg.DoModal (); 9 경우 (iReturn == IDCANCEL) 10 { 11 창 ; 12 } 13 pos 위치 = dlg.GetStartPosition (); 14 일 동안 (POS! = NULL) 15 { 16 fileDict.push_back (dlg.GetNextPathName (POS)); 17 } 18 19 삭제 [] 버피;
}
3. 폴더 경로를 선택
1 CString을 m_saveFilePath; 2 TCHAR szPath [_MAX_PATH]; 3 BROWSEINFO BI; 4 bi.hwndOwner = GetSafeHwnd (); 5 bi.pidlRoot = NULL; 6 bi.lpszTitle = _T ( " 请选择图片路径" ); 7 bi.pszDisplayName = szPath; 8 bi.ulFlags =의 BIF_RETURNONLYFSDIRS; 9 bi.lpfn = NULL; 10 bi.lParam = NULL; 11 12 LPITEMIDLIST pItemIDList = SHBrowseForFolder ( BI); 13 의 경우(pItemIDList) 14 { 15 일 경우 (SHGetPathFromIDList (pItemIDList, szPath)) 16 { 17 m_saveFilePath = szPath; 18 m_saveFilePath m_saveFilePath + = _T ( " \\ " ); 19 } 20 21 // 메모리를 회피 사용 IMalloc 인터페이스 누설 22 IMalloc을 * pMalloc; 23 경우 (SHGetMalloc (pMalloc)! = NOERROR) 24 { 25 TRACE (_T은 ( " IMalloc 인터페이스 \ n을 얻을 수 없습니다" )); 26 } 27 28 pMalloc-> 무료 (pItemIDList) (29) 의 경우 (pMalloc) 30 pMalloc-> 릴리스 (); 31 때문에 updateData) (FALSE; 32 }