|
IImage在2450下解PNG的问题?在2440下没有。
[复制链接]
开发平台:Platform Builder5.0, EVC4+SP4
硬件平台:urbetter公司2440和2450硬件平台
问题:定制系统时,添加Still Image Decoders下的JPG Decoder和PNG Decoder后,MFC开发应用程序,利用API对JPG,PNG的支持
来显示JPG,PNG,当在为2440定制系统上运行时,JPG,PNG的显示都没有问题,程序运行良好,但是同样的程序在为2450定制的
系统上运行时,PNG显示就不正常,但是同时JPG的解码却又没有问题。应用程序是一样的,并且定制系统中必要的组件都已经添加。
主要就是支持MFC,JPG Decoder和PNG Decoder。
附PNG,JPG解码的代码:
HRSRC hRsrc;
hRsrc = FindResource(GetModuleHandle(NULL), MAKEINTRESOURCE(nResoure), _T("PNG"));
if (hRsrc == NULL)
return;
DWORD dwsize = SizeofResource(GetModuleHandle(NULL), hRsrc);
HGLOBAL hg = LoadResource(GetModuleHandle(NULL), hRsrc);
LPSTR lp = (LPSTR)LockResource(hg);
HDC hdc = pDC->GetSafeHdc();
IImagingFactory *pImageFactory2 = NULL;
IImage *pImage2 = NULL;
if (SUCCEEDED(CoInitializeEx(NULL, COINIT_MULTITHREADED)))
{
HRESULT hResult = 0;
if (SUCCEEDED(hResult = CoCreateInstance(CLSID_ImagingFactory, NULL, CLSCTX_INPROC_SERVER, IID_IImagingFactory, (void **)&pImageFactory2)))
{
hResult = 0;
//if (SUCCEEDED(hResult = (pImageFactory->CreateImageFromBuffer(lp, dwsize, DISPOSAL_NONE, &pImage))))
if ((pImageFactory2->CreateImageFromBuffer(lp, dwsize, DISPOSAL_NONE, &pImage2)) == S_OK)
{
ImageInfo imgInf;
pImage2->GetImageInfo(&imgInf);
rect.right = rect.left + imgInf.Width;
rect.bottom = rect.top + imgInf.Height;
pImage2->Draw(hdc, &rect, NULL);
pImage2->Release();
}
else
AfxMessageBox(_T("CreateImageFromBuffer"));
pImageFactory2->Release();
}
else
AfxMessageBox(_T("CoCreateInstance"));
if (hResult == REGDB_E_CLASSNOTREG)
AfxMessageBox(_T("REGDB_E_CLASSNOTREG"));
CoUninitialize();
}
DeleteObject(hRsrc);
|
|