随笔-4  评论-40  文章-117  trackbacks-0

     
       CFileDialog类在允许一次选择多个文件(OFN_ALLOWMULTISELECT)时,容易出现存放文件名的缓冲区长度不够的问题,此时选择后打开时会返回ID_CANCEL,默认的长度是260,如图:



  所以要把它的长度设大些,代码如下:


 CFileDialog dlg( TRUE, "*.mesh", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_ALLOWMULTISELECT, "Mesh Files (*.mesh)|*.mesh||", AfxGetMainWnd() );
 DWORD MAXFILE = 2048;    //file name 缓冲区长度
 char* pc = new char[ MAXFILE ];
 dlg.m_ofn.lpstrFile = pc;
 dlg.m_ofn.nMaxFile = MAXFILE;
 dlg.m_ofn.lpstrFile[0]   =   NULL;

dlg.DoModal();

delete [] pc;

posted on 2008-04-03 17:17 李阳 阅读(484) 评论(0)  编辑 收藏 引用 所属分类: C++

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理