|

楼主 |
发表于 2018-6-13 19:23:16
|
显示全部楼层
本帖最后由 hpdell 于 2018-6-13 22:12 编辑
使用流位图显示 图标成功,多谢多谢了啊
目前有个问题,向你请教下,就是 在 读取 *.tda 流位图数据申请内存后,貌似不能给释放,
// 在指定位置创建指定尺寸的ICONVIEW 小工具
hIcon = ICONVIEW_CreateEx(x, // 小工具的最左像素(在父坐标中)
y, // 小工具的最上像素(在父坐标中)
w, // 小工具的水平尺寸(单位:像素)
h, // 小工具的垂直尺寸(单位:像素)
hParent, // 父窗口的句柄。如果为0 ,则新小工具将成为桌面(顶级窗口)的子窗口
WM_CF_SHOW | WM_CF_HASTRANS, // 窗口创建标记。为使小工具立即可见,通常使用 WM_CF_SHOW
ICONVIEW_CF_AUTOSCROLLBAR_V, // 默认是0,如果不够现实可设置增减垂直滚动条
Id, // 小工具的窗口ID
ICON_Width, // 图标的水平尺寸
ICON_Height); // 图标的垂直尺寸,图标和文本都包含在里面,不要大于ICONVIEW的高度,导致Text显示不完整
for(i=0; i<(BitmapNum); i++) // 目前图标总数量 QSPI_ICONVIEW_PICTURE_ADDR_12+1
{
result = f_open(&ICONVIEW_File, pBm.pFileName, FA_READ );
if (result != FR_OK) return 0;
_IconViewBuff = (uint8_t *)GUI_MYmalloc(ICONVIEW_File.obj.objsize); //申请内存
_IconViewCom = _IconViewBuff;
result = f_read(&ICONVIEW_File, _IconViewCom, ICONVIEW_File.obj.objsize, &bw);
if (result != FR_OK)
{
__IO uint8_t c;
for(c=0;c<i;c++) //之前申请到的内存全部释放
{
_IconViewCom = _IconViewBuff[c];
GUI_MYfree((void *) _IconViewCom);
}
return 0;
}
f_close(&ICONVIEW_File);
_IconViewCom = _IconViewBuff;
ICONVIEW_AddStreamedBitmapItem (hIcon, ( const void *) _IconViewCom, pBm.pTextCn);
// 方法一 释放内存
_IconViewCom = _IconViewBuff[c];
GUI_MYfree(_IconViewCom ); //此处释放内存后 ,貌似 图标显示的都是最后一个??????????????
}
//方法二释放内存
for(i=0; i<(BitmapNum); i++)
{
_IconViewCom = _IconViewBuff;
GUI_MYfree(_IconViewCom ); //此处释放内存后 ,显示的第 一个图标显示不出来 ??????????????
}
|
|