关于
“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