关于PNG图片读取失败问题

system110   2008-11-3 10:20 楼主
BOOL CInfoDlg::ShowPic(HDC hdc, const TCHAR *filename, int nStartX, int nStartY, int nChangeX, int nChangeY)
{
        IImagingFactory   *pImgFactory   =   NULL;
        IImage   *pImage   =   NULL;
        ImageInfo   imageInfo;

        RECT   dstRc;

        if(FAILED(CoInitializeEx(NULL,COINIT_MULTITHREADED)))
        {
                MessageBox(TEXT( "CoInitializeEx "));
        }

        if(SUCCEEDED(CoCreateInstance(CLSID_ImagingFactory,
                                        NULL,CLSCTX_INPROC_SERVER,
                                        IID_IImagingFactory,
                                        (void **)&pImgFactory)))  
                {
                        if   (SUCCEEDED(pImgFactory->CreateImageFromFile(filename,&pImage)))  
                        {
                                pImage-> GetImageInfo(&imageInfo);
                                dstRc.left   =   nStartX;
                                dstRc.top   =   nStartY;

                                dstRc.right   =   nStartX   +   nChangeX;
                                dstRc.bottom   =   nStartY   +   nChangeY;
                                pImage-> Draw(hdc,   &dstRc,   NULL);
                                pImage-> Release();
                        }
                        else
                        {
                                MessageBox(TEXT( "CreateImageFromFile "));
                        //        AfxMessageBox("CreateImageFromFile");
                                pImgFactory   =   NULL;
                                pImage   =   NULL;
                                CoUninitialize();
                                return   FALSE;
                        }
                }
        else
        {
                MessageBox(TEXT( "CoCreateInstance "));
                pImgFactory   =   NULL;
                pImage   =   NULL;
                CoUninitialize();
                return   FALSE;
        }
        pImgFactory   =   NULL;
        pImage   =   NULL;
        CoUninitialize();
        return   TRUE;
}

上面是我的代码,实现是在onpaint中,ShowPic(dc, _T("\\exitdown.png"), 10, 10, 24, 24);

图片是放在F:\GPS\exitdown.png   图片的路径我换过很多,也试过相对路径和绝对路径的表示,但是运行倒if   (SUCCEEDED(pImgFactory->CreateImageFromFile(filename,&pImage)))  时,就跳到ELSE去运行了,弄了我很长时间,快要崩溃了,跪求大侠拔刀相助。。。。。。。。。

回复评论 (5)

你这个是在wince下运行的程序吗?

WinCE下怎么会有F:这样的东东呢?WinCE是不支持相对路径的。
点赞  2008-11-3 14:14
我是在模拟器上运行,我应该如何表示我的路径呢,我的图片是放在工程路径F:\GPS\EXIT.PNG
我试了很多表示方法还是不行,苦恼中,。。。。。。。。。。。
点赞  2008-11-3 14:42
用根目录 绝对路径~
如\\temp\\1.png
点赞  2008-11-3 15:58
建议用目标机上做试验测试,模拟器上容易产生误导。

并注意图片存放的目录等。
点赞  2008-11-3 16:23
真的是目录的问题谢谢各位。。。\\Storage Card\\xx.png
点赞  2008-11-4 15:36
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复