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)*.apkAll 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); } }

经验分享 程序员 微信小程序 职场和发展