CFileDialog问题,不明白啊不明白

eHuaTian 2003-04-17 05:54:00
在一个类MyShape.h中如下定义:public CString m_strFileName;
在MyShape.cpp中有如下语句:CFile file;
CFileException e;
char szFilter[]="shp(*.shp)\0*.shp\0All Files(*.*)\0*.*\0\0";
CFileDialog OpenDialog(TRUE);
OpenDialog.m_ofn.lpstrFilter=(LPSTR)szFilter;
if(OpenDialog.DoModal()==IDOK)
{
m_strPathName=OpenDialog.GetPathName();
return TRUE;
}
else
return FALSE;

运行到m_strPathName=OpenDialog.GetPathName();此句时报错。
唉。why,why??
...全文
29 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
eHuaTian 2003-04-17
  • 打赏
  • 举报
回复
我又重新调试了下,当打开文件的扩展名为:*.shp时,出错
而如果文件的扩展名不是*.shp时,正确。why,多多指教
palship 2003-04-17
  • 打赏
  • 举报
回复
这和m_strPathName有无初始化无关吧?
zhdleo 2003-04-17
  • 打赏
  • 举报
回复
确定?

OpenDialog.DoModal()运行过了,说明
OpenDialog应该不会有问题。

GetPathName();本来就不要参数。

m_strPathName=OpenDialog.GetPathName();
这一句就只剩
m_strPathName它了,检查它。

CString m_strPathName 有无初始化,,等等。。。。。
databasesql 2003-04-17
  • 打赏
  • 举报
回复
其实用\0也是一样的,
我刚才仔细看过你的程序了,
没发现问题,
我又把代码考下来check了一个,
在我机器上运行也没有问题。
我想应该是你的系统出了问题。
程序并没有错。
寻开心 2003-04-17
  • 打赏
  • 举报
回复
char szFilter[]="shp(*.shp)\0*.shp\0All Files(*.*)\0*.*\0\0";
怎么出来这么多\0呢,通常的做法是用|符号呀。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧