CFileDialog用法简介.doc
文本预览下载声明
VC打开多个文件
2011-05-09
我将CFileDialog设为可以多选多个文件,不过发现那个m_ofn中的nMaxfile值的默认为260,这样不能一次选多个,它有个限制,我自己给它赋了个比较大的值,可发现没有用,应该怎么办才能做到一次性可以全选,不管有多少个文件
关键是要提供一块缓冲区给CFileDialog使用。即: dlg.m_ofn.lpstrFile = new CHAR[MAX_FILE_LEN]; 例如: void CHtml2txtDlg::OnOpen() { CFileDialog dlg(TRUE, // Open NULL, // 缺省扩展名 NULL, // 缺省文件名 NULL, // 选项 HTML Files (*.html;*.htm)|*.html; *.htm|| , // 文件过滤器 NULL ); // 父窗口 const int MAX_FILE_LEN = 100000; dlg.m_ofn.Flags |= OFN_ALLOWMULTISELECT; dlg.m_ofn.lpstrFile = new CHAR[MAX_FILE_LEN]; dlg.m_ofn.lpstrFile[0] = 0; dlg.m_ofn.nMaxFile = MAX_FILE_LEN; if (dlg.DoModal()==IDOK) { htmlStrings.RemoveAll(); POSITION pos = dlg.GetStartPosition(); while (pos != NULL) { htmlStrings.AddTail(dlg.GetNextPathName( pos )); } int cnt = fillList(m_htmlList, htmlStrings); if ( cnt 0 ) { CString str = htmlStrings.GetHead(); GetDlgItem(IDC_PATH)- SetWindowText(str.Left(str.ReverseFind( \\ )+1)); } } delete [] dlg.m_ofn.lpstrFile; }
偶Copy自己的项目代码给楼主作参考,记得偶得好噢~~~~~~~void CGeoAnView::OnLayerAddin() {// TODO: Add your command handler code herechar szFilter[]=Shape文件(*.shp)|*.shp|所有文件(*.*)|*.*||;CFileDialog dlg(TRUE,shp, _T(*.shp),OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT,szFilter,this); CString strFileNames;dlg.m_ofn.lpstrFile=strFileNames.GetBuffer(2048);dlg.m_ofn.nMaxFile=2048;if(dlg.DoModal()==IDOK) {POSITION pos = dlg.GetStartPosition();while (pos){CString strFilePath=dlg.GetNextPathName(pos);// find file path name yes or no in the list//m_MoProject.AddLayer(strFilePath); }RefreshLayerDlg();RefreshSearchDlg();}}
HYPERLINK /demok2010/article/details/5957523 CFileDialog的用法简介
分类: HYPERLINK /DEMOK2010/article/category/745143 visual c++2010-10-21 21:4325584人阅读 HYPERLINK /demok2010/article/details/5957523 \l comments#comments 评论(11) HYPERLINK javascript:void(0); \o 收藏 收藏 HYPERLINK /demok2010/article/details/5957523 \l report#report \o 举报 举报
HYPERLINK /tag/details.html?tag=%e6%89%a9%e5%b1%95 \t _blank 扩展 HYPERLINK /tag/d
显示全部