关于GetOpenFileName这个函数的调用方法问题(急急急!!!)

flamingheart 2007-08-28 11:39:18
自己写了一个程序调用GetOpenFileName,发现总是莫名其妙地导致程序突然消失,百思不得其解,于是看了《Windows程序设计(第五版)》第13章的PopPad例子程序,发现也有相同的问题,下面是一个可以必现的bug

运行PopPad程序-》File-》Open-》把鼠标悬浮在一个文件上直到出现tips-》点取消按钮-》File-》Open-》把鼠标悬浮在一个文件上直到出现tips-------》整个程序消失

谁知道这是怎么回事,怎么改正,望高手指教。
...全文
986 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
dyw 2007-09-02
  • 打赏
  • 举报
回复
该问题可以解决,参考:
http://blog.csdn.net/dyw/archive/2007/09/02/1768857.aspx
dyw 2007-09-01
  • 打赏
  • 举报
回复
try to derive your own class from CFileDialog and disable the OnMouseHover messages.
SeaDragonH 2007-08-30
  • 打赏
  • 举报
回复
http://support.microsoft.com/kb/909486/en-us
看看,可能对你有用.
chehw 2007-08-29
  • 打赏
  • 举报
回复
你是怎么调用GetOpenFileName的?
dyw 2007-08-29
  • 打赏
  • 举报
回复
也Google一下
flamingheart 2007-08-29
  • 打赏
  • 举报
回复
google了一下,还是没有找到解决办法啊

dyw(道不同不相为谋) ( )
也没有GetOpenFileNameEx这个函数啊
firescript 2007-08-29
  • 打赏
  • 举报
回复
不好意思 上面的发错地方了 呵呵
firescript 2007-08-29
  • 打赏
  • 举报
回复

int NAMEBUF=10000;

CFileDialog m_filedialog(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,"All Files (*.*)|*.*||",AfxGetMainWnd());
m_filedialog.m_ofn.lpstrFile=new TCHAR[NAMEBUF]; // 重新定义 lpstrFile 缓冲大小
memset(m_filedialog.m_ofn.lpstrFile,0,NAMEBUF); // 初始化定义的缓冲
m_filedialog.m_ofn.nMaxFile = NAMEBUF; // 重定义 nMaxFile
if(m_filedialog.DoModal()==IDOK)
{
//得到选择文件的路径pathname
m_Path_Name=m_filedialog.GetPathName();

//遍历得到所有选择文件的路径
POSITION pos=m_filedialog.GetStartPosition();
while (pos!=NULL)
{
m_All_File_Number++;
m_All_File_Name=m_All_File_Name+m_filedialog.GetNextPathName(pos)+"|";
}
}
delete [] m_filedialog.m_ofn.lpstrFile; // 切记使用完后释放资源
疯石头 2007-08-29
  • 打赏
  • 举报
回复
路过^^
``
Jayky 2007-08-28
  • 打赏
  • 举报
回复
jasonshark厉害
jasonshark 2007-08-28
  • 打赏
  • 举报
回复
google "GetOpenFileName access violation"
长尾巴的悟空 2007-08-28
  • 打赏
  • 举报
回复
路过..,...
flamingheart 2007-08-28
  • 打赏
  • 举报
回复
那怎么办啊,我发现有些应用程序的这个open对话框就没这个问题,他们是怎么实现的呢?
jasonshark 2007-08-28
  • 打赏
  • 举报
回复
就连纪事本都有这个问题,我在桌面上建txt文件来试验过
调试发现是Shell32里面的问题,Access Violation. 似乎是某个对象被提前释放了.
mynamelj 2007-08-28
  • 打赏
  • 举报
回复
打补丁看看
dyw 2007-08-28
  • 打赏
  • 举报
回复
看看GetOpenFileNameEx是否有问题,或改用之。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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