当前位置: 首页 > 工具软件 > SonicUI > 使用案例 >

【SonicUI】最可能的异常: Microsoft C++ 异常: 内存位置 0x0011f280 处的 char。

弓举
2023-12-01


关于

“SonicUIDemo.exe”: 已加载“C:\Windows\System32\asycfilt.dll”
SonicUIDemo.exe 中的 0x7516812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0011f280 处的 char。
SonicUIDemo.exe 中的 0x7516812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0011f280 处的 char。
SonicUIDemo.exe 中的 0x7516812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0011f280 处的 char。
“SonicUIDemo.exe”: 已加载“D:\Program Files\youdao\Dict\6.2.54.2064\WordStrokeHelper32.dll”


通过源码查看。

 _SkinMgr.Init();

pImgButton->Load(PNG_BUTTON); 在加载PNG图片时会出现以上异常提示。。


		CxImage img;
		img.Decode(pData, dwSize, 0);

发现楼主是这样的定义的CxImage的 Decode的。。

其实  bool Decode(BYTE * buffer, DWORD size, DWORD imagetype);  最后一个参数数需要Image类型的。

enum ENUM_CXIMAGE_FORMATS{
CXIMAGE_FORMAT_UNKNOWN,
#if CXIMAGE_SUPPORT_BMP
CXIMAGE_FORMAT_BMP,
#endif
#if CXIMAGE_SUPPORT_GIF
CXIMAGE_FORMAT_GIF,
#endif
#if CXIMAGE_SUPPORT_JPG
CXIMAGE_FORMAT_JPG,
#endif
#if CXIMAGE_SUPPORT_PNG
CXIMAGE_FORMAT_PNG,
#endif
#if CXIMAGE_SUPPORT_MNG
CXIMAGE_FORMAT_MNG,
#endif
#if CXIMAGE_SUPPORT_ICO
CXIMAGE_FORMAT_ICO,
#endif
#if CXIMAGE_SUPPORT_TIF
CXIMAGE_FORMAT_TIF,
#endif
#if CXIMAGE_SUPPORT_TGA
CXIMAGE_FORMAT_TGA,
#endif
#if CXIMAGE_SUPPORT_PCX
CXIMAGE_FORMAT_PCX,
#endif
#if CXIMAGE_SUPPORT_WBMP
CXIMAGE_FORMAT_WBMP,
#endif
#if CXIMAGE_SUPPORT_WMF
CXIMAGE_FORMAT_WMF,
#endif
#if CXIMAGE_SUPPORT_J2K
CXIMAGE_FORMAT_J2K,
#endif
#if CXIMAGE_SUPPORT_JBG
CXIMAGE_FORMAT_JBG,
#endif
#if CXIMAGE_SUPPORT_JP2
CXIMAGE_FORMAT_JP2,
#endif
#if CXIMAGE_SUPPORT_JPC
CXIMAGE_FORMAT_JPC,
#endif
#if CXIMAGE_SUPPORT_PGX
CXIMAGE_FORMAT_PGX,
#endif
#if CXIMAGE_SUPPORT_PNM
CXIMAGE_FORMAT_PNM,
#endif
#if CXIMAGE_SUPPORT_RAS
CXIMAGE_FORMAT_RAS,
#endif
CMAX_IMAGE_FORMATS
};


以上是类型定义。。


typedef enum IMAGE_FORMAT
{
	IMAGE_UNKNOWN = 0,
	IMAGE_BMP,
	IMAGE_GIF,
	IMAGE_JPG,
	IMAGE_PNG,
	IMAGE_ICO,
	IMAGE_TAG,
};

\SonicUI_src\include\ISonicUI.h


void CSkinMgr::Init()
{
	pImgNormal = GetSonicUI()->CreateImage();
	pImgNormal->Load(BMP_NORMAL,IMAGE_BMP);
	pImgNormal->SetColorKey(RGB(255, 0, 255));

	pImgHover = GetSonicUI()->CreateImage();
	pImgHover->Load(BMP_HOVER,IMAGE_BMP);
	pImgHover->SetColorKey(RGB(255, 0, 255));

	pImgClick = GetSonicUI()->CreateImage();
	pImgClick->Load(BMP_CLICK,IMAGE_BMP);
	pImgClick->SetColorKey(RGB(255, 0, 255));

	pImgGif = GetSonicUI()->CreateImage();
	pImgGif->Load(GIF_TEST1,IMAGE_GIF);

	pImgCard = GetSonicUI()->CreateImage();
	pImgCard->Load(BMP_CLICK,IMAGE_BMP);

	pImgButton = GetSonicUI()->CreateImage();
	pImgButton->Load(PNG_BUTTON,IMAGE_PNG);

	pImgDlg = GetSonicUI()->CreateImage();
	pImgDlg->Load(PNG_DLG_BG,IMAGE_PNG);
	pImgDlg->DestroyAlphaChannel();

	pImgClose = GetSonicUI()->CreateImage();
	pImgClose->Load(PNG_CLOSE,IMAGE_PNG);
}

\SonicUI_src\SonicUIDemo\SkinMgr.cpp

在Load时,传入图片格式,则可以处理掉 Microsoft C++ 异常: 内存位置 0x0011f280 处的 char


virtual BOOL Load(UINT nResId, UINT nFormat,HMODULE hResModule = NULL, LPCTSTR szResourceType = NULL);

virtual BOOL Load(UINT nFormat,HGLOBAL hGlobal, DWORD dwSize);

virtual BOOL Load(LPCTSTR lpszFileName,UINT nFormat);


以上都是需要处理的函数。。


\SonicUI_src\SonicUI\SonicImage.h






 类似资料: