OleLoadPicturePath()使用绝对路径时可以显示图片,使用相对路径时显示不出图片

时间:2023-02-10 08:02:36
              CString ImagePath;
ImagePath = ".\\image\\OT20\\module\\Front.jpg";//使用相对路径时怎么也显示不出路径
//ImagePath = "F:\\项目文件\\首界面测试\\GUI Design\\image\\OT20\\module\\Front.jpg";使用绝对路径可以显示出图片
showPicObject.ShowImage(GetDlgItem(IDC_STATIC_IMG)->GetDC(),ImagePath,0,0);


BOOL ShowPic::ShowImage(CDC* pDC,CString strPath, int x, int y)
{
   
    IPicture *pPic=NULL; 
    OleLoadPicturePath(CComBSTR(strPath.GetBuffer()), (LPUNKNOWN)NULL, 0, 0, IID_IPicture,(LPVOID*)&pPic);
    if (NULL==pPic) //使用相对路径时pPic总是无效
    {
        return FALSE;
    }
}

使用ImagePath = "F:\\项目文件\\首界面测试\\GUI Design\\image\\OT20\\module\\Front.jpg"可以显示出图片,但使用ImagePath = ".\\image\\OT20\\module\\Front.jpg"怎么也显示不出图片,请各位帮忙看看。

7 个解决方案

#1


[
引用
请各位帮忙看看

极大概率是相对路径的写法不对,相对路径是相对.exe文件而言。
比如工程最后编译输出的exe在下面这个目录: d:\MyProject\Debug\Sample.exe
那么相对路径就是相对Sample.exe而言。

然后,一个点号  . 代表当前目录,二个点号  ..代表上一级目录。

不清楚你工程的具体目录结构,
可以仔细检查下,如果是相对路径的写法,是否能够真正定位到文件。
 , OleLoadPicturePath()使用绝对路径时可以显示图片,使用相对路径时显示不出图片
我觉得没有错呀, GetModuleFileName 获得当前应用路径名,然后构造出绝对路径
, 按照3#先GetModuleFileName ,然后构造绝对路径时可以实现的。, 还有其它好的建议吗?, 先调用SetCurrentDirectory, 你好 我现在在尝试将3ds文件导入qt中去 现在遇到的问题是模型可以显示出来但是模型贴图总是显示不出来不知道为什么 能指教一下吗?谢谢]

#1


[
引用
请各位帮忙看看

极大概率是相对路径的写法不对,相对路径是相对.exe文件而言。
比如工程最后编译输出的exe在下面这个目录: d:\MyProject\Debug\Sample.exe
那么相对路径就是相对Sample.exe而言。

然后,一个点号  . 代表当前目录,二个点号  ..代表上一级目录。

不清楚你工程的具体目录结构,
可以仔细检查下,如果是相对路径的写法,是否能够真正定位到文件。
 , OleLoadPicturePath()使用绝对路径时可以显示图片,使用相对路径时显示不出图片
我觉得没有错呀, GetModuleFileName 获得当前应用路径名,然后构造出绝对路径
, 按照3#先GetModuleFileName ,然后构造绝对路径时可以实现的。, 还有其它好的建议吗?, 先调用SetCurrentDirectory, 你好 我现在在尝试将3ds文件导入qt中去 现在遇到的问题是模型可以显示出来但是模型贴图总是显示不出来不知道为什么 能指教一下吗?谢谢]