注册 登录
OSG中国官方论坛-有您OSG在中国才更好 返回首页

dearpa的个人空间 http://bbs.osgchina.org/?5264 [收藏] [复制] [分享] [RSS]

日志

VC下对话框多选及判断文件是否打开

已有 670 次阅读2013-3-4 16:50 | 对话框

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,否则内存会报错


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
返回顶部