|
想在button控件上显示图片,把三张流位图文件放在内存卡中,读取三张流位图文件时,第一张可以读取成功,第二三张不能成功,
调试发现 hMem = GUI_ALLOC_AllocZero(file1.obj.objsize); 读取第一张流位图 返回的地址正确。读取第二三张时,返回的地址为0x00000000
无法继续从内存卡中读取流位图,不知什么原因。难道GUI_ALLOC_AllocZero()只能申请一次内存,必须释放后,才能再次申请?
Buttom_Play_StearmBitmap=_ShowStreamBitmap("0:/Doc/start.dta");
Buttom_Setting_StearmBitmap=_ShowStreamBitmap("0:/Doc/setting.dta");
Buttom_About_StearmBitmap=_ShowStreamBitmap("0:/Doc/about.dta");
GUI_HMEM _ShowStreamBitmap(const char *sFilename)
{
GUI_HMEM hMem,hMem1,hMem2;
char *_acBuffer;
#if !defined Method1
GUI_BITMAP Bitmap;
GUI_LOGPALETTE Palette;
#endif
/* 打开文件 */
result = f_open(&file1, sFilename, FA_OPEN_EXISTING | FA_READ | FA_OPEN_ALWAYS);
if (result != FR_OK)
{
return 0;
}
/* 申请一块内存空间 并且将其清零 */
hMem = GUI_ALLOC_AllocZero(file1.obj.objsize);
/*将申请到内存的句柄转换成指针类型 */
_acBuffer = GUI_ALLOC_h2p(hMem);
//GUI_ALLOC_Free(hMem);
/* 读取文件到动态内存 */
result = f_read(&file1, _acBuffer, file1.obj.objsize, &bw);
if (result != FR_OK)
{
return 0;
}
f_close(&file1);
return hMem;
} |
|