VC 打开文件框选择文件
VC中,选择文件的方法:
1. MFC下:
CFileDialog fDlg(TRUE, _T(".apk"), NULL, OFN_HIDEREADONLY | OFN_FORCESHOWHIDDEN | OFN_PATHMUSTEXIST | OFN_ALLOWMULTISELECT, _T("Apk Files(*.apk)|*.apk|All Files(*.*)|*.*||")); INT_PTR nResponse = fDlg.DoModal(); if (nResponse == IDOK) { CString strPath; POSITION m_Position = fDlg.GetStartPosition(); while(m_Position != NULL) { strPath = fDlg.GetNextPathName(m_Position); } }
2. 比较原始的,但很好用,使用API:
OPENFILENAME ofn = {0}; TCHAR lpstrFilename[MAX_PATH * 20] = {0}; ofn.lStructSize= sizeof(OPENFILENAME); ofn.hwndOwner = NULL; ofn.lpstrFilter= _T("Apk Files(*.apk) *.apk All Files(*.*) *.* "); ofn.lpstrFile = lpstrFilename; ofn.nMaxFile = MAX_PATH * 20;
ofn.lpstrInitialDir = TEXT("C:..."); //初始化一个路径
ofn.Flags = OFN_HIDEREADONLY | OFN_FORCESHOWHIDDEN | OFN_PATHMUSTEXIST | OFN_EXPLORER | OFN_ALLOWMULTISELECT;
if (GetOpenFileName(&ofn)) { TCHAR szDir[MAX_PATH]= {0}; TCHAR szName[128]= {0}; TCHAR szPath[MAX_PATH]= {0}; TCHAR *pos = lpstrFilename; if (0 == lpstrFilename[_tcslen(lpstrFilename) + 1])// 只有一个文件 { _tcscpy_s(szPath, MAX_PATH, lpstrFilename); } else { _tcscpy_s(szDir, MAX_PATH, lpstrFilename); _tcscat_s(szDir, MAX_PATH, _T("\")); do { pos = &pos[_tcslen(pos)] + 1; if (0 == *pos) break; _tcscpy_s(szPath, MAX_PATH, szDir); _tcscat_s(szPath, MAX_PATH, pos); } while (1); } }
