1,,默认情况下,CFileDialog只能单选文件,如果要多选:
const DWORD dwFlags = OFN_ALLOWMULTISELECT;//开启多选模式
CString strFilter = _T("xml路径文件(*.xml)|*.xml|");
CFileDialog fileDlg(TRUE,_T(""), _T(""), dwFlags,strFilter);
fileDlg.m_ofn.lpstrInitialDir=g_globalParam.m_EnviroOptions.m_szFavoriteFilePath.c_str();
CONST DWORD nMaxFile = 1024*1024; //确定多选的个数,否则多选文件的个数将受限制
char* pbFileNameBuf = new char[nMaxFile];
if ( NULL == pbFileNameBuf )
{
return ; // E_OUTOFMEMORY
}
memset(pbFileNameBuf, 0, nMaxFile);
fileDlg.m_pOFN->lpstrFile = pbFileNameBuf;
fileDlg.m_pOFN->nMaxFile = nMaxFile;
std::list<std::string> listXmlFiles;
if (fileDlg.DoModal() == IDOK)
{
CString strFileName = fileDlg.GetNextPathName(pos);
listXmlFiles.push_back((LPCTSTR)strFileName);
}
2,VC判断文件是否打开:
用独占方式即可
HANDLE hFile;
hFile = CreateFile (strXmlFile.c_str(),GENERIC_READ|GENERIC_WRITE,
0,NULL,OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL); //第三个参数就是独占方式打开
if ( hFile == INVALID_HANDLE_VALUE )
{
CString message=strXmlFile.c_str();
int choice = ::AfxMessageBox(message, MB_YESNOCANCEL | MB_ICONQUESTION);
if (choice==IDNO)
{
CloseHandle(hFile); continue;
}
}
但该方法只能判断非txt文件,txt文件无法判断。。
============================
CpictureEx类和bcg库类有冲突,不能在继承了bcg库模板的对话框里,使用CpictureEx,否则内存会报错