自己写了一个程序调用GetOpenFileName,发现总是莫名其妙地导致程序突然消失,百思不得其解,于是看了《Windows程序设计(第五版)》第13章的PopPad例子程序,发现也有相同的问题,下面是一个可以必现的bug 运行PopPad程序-》File-》Open-》把鼠标悬浮在一个文件上直到出现tips-》点取消按钮-》File-》Open-》把鼠标悬浮在一个文件上直到出现tips-------》整个程序消失谁知道这是怎么回事,怎么改正,望高手指教。
调试欢乐多
调试发现是Shell32里面的问题,Access Violation. 似乎是某个对象被提前释放了.
也没有GetOpenFileNameEx这个函数啊
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; // 切记使用完后释放资源
[/code]
看看,可能对你有用.
http://blog.csdn.net/dyw/archive/2007/09/02/1768857.aspx