使用CFileDialog后相对路径的图片加载失败的问题
来源:互联网 发布:2016年淘宝双11销售额 编辑:程序博客网 时间:2024/05/15 12:56
这几天被一个很困惑的问题给纠结到
是这样的场景:
XP系统启动CFileDialog用来选择一张图片。返回后页面整个程序资源重新加载一次。
问题出现了。关闭这个后所有相对路径的图片都加载失败了!!
放到WIN7系统上竟然正常!!
一开始以为是SP1补丁没有打,试了不管用。由英文版vs2008改成中文版vs2008也不管用。
经过两天分析,发现问题出在我加载图片是相对路径,而绝对路径没问题,试着把路径改了可以了。但是为了弄清楚为什么,又经过一番分析,发现问题出在当前路径上,也就是函数GetCurrentDirectory返回的路径上。在没进入选择dialog前这个路径是我执行文件的路径。进入选择dialog后路径变成了选择的那个路径。导致所有相对路径图片都加载失败了。
终极改法:
const TCHAR szFilters[]= _T("Icon files (*.png)|*.ico|All Files (*.*)|*.*||");
CFileDialog dlg(TRUE, _T("png"), _T("*.png"), OFN_FILEMUSTEXIST| OFN_READONLY, szFilters);
WCHAR azOldPath[MAX_PATH];
GetCurrentDirectory(MAX_PATH,azOldPath);
GetCurrentDirectory(MAX_PATH,azOldPath);
if (dlg.DoModal() == IDOK)
{
{
WCHAR azRealPath[MAX_PATH];
GetCurrentDirectory(MAX_PATH,azRealPath); //这个作用和dlg.GetPathName 是同一个值
SetCurrentDirectory(azOldPath);//这里把路径还原
GetCurrentDirectory(MAX_PATH,azRealPath); //这个作用和dlg.GetPathName 是同一个值
SetCurrentDirectory(azOldPath);//这里把路径还原
}
应该是在win7上微软把这个问题修复了。理论上从CFileDialog回来后路径应该还回还原,但是xp上就没有。应该是微软的一个bug吧。
可以随便写个简单程序实验一下
const TCHAR szFilters[]= _T("Icon files (*.png)|*.ico|All Files (*.*)|*.*||");
CFileDialog dlg(TRUE, _T("png"), _T("*.png"), OFN_FILEMUSTEXIST| OFN_READONLY, szFilters);
WCHAR azOldPath[MAX_PATH];
GetCurrentDirectory(MAX_PATH,azOldPath);
GetCurrentDirectory(MAX_PATH,azOldPath);
CImage img;
img.Load(_T("res/test.png"));//在启动dialog之前加载这张图是可以的
if (dlg.DoModal() == IDOK)
{
{
CImage img2;
//SetCurrentDirectory(azOldPath);//这里把路径还原,加了这句就不会失败
img2.Load(_T("res/test.png"));//在启动dialog后这个就会加载失败
if(img2.IsNull())
{
ASSERT(0);
}
}
- 使用CFileDialog后相对路径的图片加载失败的问题
- 解决使用CFileDialog造成的ADO访问相对路径下的数据库出错问题
- struts2使用action跳转后的页面路径如果是相对路径的话会出现css、js以及图片等无法加载问题
- 关于在jsp中使用图片相对路径的问题
- CFileDialog改变文件路径导致的一系列问题(如无法安全删除u盘、访问相对路径失败)的解决方法
- 使用CFileDialog的问题
- 文件的相对路径和绝对路径,加载资源文件失败
- WPF使用相对路径下的图片
- 构建CFileDialog类对象后的路径
- MFC 使用文件打开对话框(CFileDialog类)后,程序的当前路径变成CFileDialog类打开文件的路径
- Bottle中对内联CSS中的background-image属性图片相对路径url()加载失败的折中方案
- eclipse使用相对路径加载图片
- WPF加载相对路径的图片的解决方法
- WPF加载相对路径的图片的解决方法
- asp.net 用户控件中 使用相对路径的解决方法-------- 图片路径问题(用户控件、图片路径) ,ResolveUrl
- bat中使用相对路径的问题
- vs中使用相对路径的问题
- php相对路径的使用问题
- 关于Java中的递归操作--(以将一个正整型十进制数转换为二进制数为例)
- VS2010安装报错,提示“ 无法打开数据文件deffactory.dat”
- 动态规划——矩阵连乘问题
- Boost Productivity Greatly With CodeSmith's Help During ASP.NET Development
- struts2下载文件示例
- 使用CFileDialog后相对路径的图片加载失败的问题
- Linux Command and Tools(updating)
- 删除桌面壁纸的小程序(c语言)
- NAS DIY的设计和实施过程-10-SMB篇-再不更新估计已经有N个人要骂我要太监这个NAS项目了
- C/C++堆、栈详解
- Android 动态限制EditText输入的字条类型及键盘类型、对输入的监控
- NUnit2.0详细使用方法
- struts2文件上传
- VB工程20---百例43----群星闪烁