硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2667|回复: 5
收起左侧

[emWin] ICONVIEW使用SD卡显示失败

[复制链接]

39

主题

127

回帖

244

积分

高级会员

积分
244
发表于 2016-10-15 14:26:32 | 显示全部楼层 |阅读模式
#define ID_ICONVIEW_0   (GUI_ID_USER + 0x01)
WM_HWIN IconviewWin;    //ICONVIEW控件窗口

static void cb_BkWindow(WM_MESSAGE * pMsg) {   
   switch (pMsg->MsgId) {
     case WM_PAINT:
     break;
     case WM_INIT_DIALOG:
    break;
    default:
    WM_DefaultProc(pMsg);
    break;
  }
}


//演示函数
void bmpdisplay_demo(void)
{
    static FIL BMPFile;
    GUI_HMEM hMem;
    uint8_t *_acBuffer;
    UINT* BytesRead;
   
  WM_SetCallback(WM_HBKWIN,cb_BkWindow); //设置桌面窗口WM_HBKWIN的回调函数
   
    hMem = GUI_ALLOC_AllocZero(150000);
   _acBuffer = GUI_ALLOC_h2p(hMem);
     f_open(&BMPFile,(const TCHAR*)"0:/PICTURE/bird.dat", FA_OPEN_EXISTING|FA_READ|FA_OPEN_ALWAYS);    //打开文件
     f_read(&BMPFile,_acBuffer,BMPFile.fsize,(UINT *)&BytesRead); 这里对吗?
     GUI_EnableAlpha(1);
     ICONVIEW_EnableStreamAuto();
     IconviewWin = ICONVIEW_CreateEx(40, 1,64, 64,
                                                                     WM_HBKWIN, WM_CF_SHOW | WM_CF_HASTRANS,
                                                                     0, GUI_ID_ICONVIEW0, 48, 48);
     ICONVIEW_AddStreamedBitmapItem(IconviewWin,(const void *)&_acBuffer,"");
     ICONVIEW_SetBkColor(IconviewWin,ICONVIEW_CI_SEL,GUI_WHITE|0X40000000);
//     GUI_ALLOC_Free(hMem); //不能释放,后面ICONVIEW刷新还要使用,要不图标没法显示啦。
     f_close(&BMPFile);        //关闭BMPFile文件
}
参考原来在论坛上的帖子(为ICONVIEW控件添加流位图要注意调用函数ICONVIEW_EnableStreamAuto()|uCOS & ucGUI & emWin - 安富莱电子论坛 - Powered by phpwind
http://www.armbbs.cn/forum.php?mod=viewthread&tid=12661),仿照写的程序不知道为什么不成功,已经把 GUI_ALLOC_Free(hMem); 注释掉啦
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115722
QQ
发表于 2016-10-16 10:59:51 | 显示全部楼层
1.   UINT  BytesRead;
       f_read(&BMPFile,_acBuffer,BMPFile.fsize,  (UINT *)&BytesRead);

2.   ICONVIEW_AddStreamedBitmapItem(IconviewWin,  (const void *)&_acBuffer,     "");
      修改为
     ICONVIEW_AddStreamedBitmapItem(IconviewWin,  (const void *)_acBuffer,     "");
回复

使用道具 举报

39

主题

127

回帖

244

积分

高级会员

积分
244
 楼主| 发表于 2016-10-16 21:35:42 | 显示全部楼层

回 eric2013 的帖子

eric2013:1.   UINT  BytesRead;
       f_read(&BMPFile,_acBuffer,BMPFile.fsize,  (UINT *)&BytesRead);

2.   ICONVIEW_AddStreamedBitmapItem(IconviewWin,  (const void *)&_acBuffer .. (2016-10-16 10:59) 
修改以后还是不行,我有把它放在WM_PAINT中,只能执行GUI_SetBkColor(GUI_WHITE);
   GUI_Clear();,放在WM_INIT_DIALOG中也不行。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115722
QQ
发表于 2016-10-17 01:50:37 | 显示全部楼层

回 坚持再坚持 的帖子

坚持再坚持:修改以后还是不行,我有把它放在WM_PAINT中,只能执行GUI_SetBkColor(GUI_WHITE);
   GUI_Clear();,放在WM_INIT_DIALOG中也不行。 (2016-10-16 21:35) 
先把你的那个流位图,即dta格式的文件,使用B2C小软件转换成C文件,然后测试下,这样就排除了你的SD卡问题。
回复

使用道具 举报

39

主题

127

回帖

244

积分

高级会员

积分
244
 楼主| 发表于 2016-10-18 16:45:37 | 显示全部楼层

回 eric2013 的帖子

eric2013:先把你的那个流位图,即dta格式的文件,使用B2C小软件转换成C文件,然后测试下,这样就排除了你的SD卡问题。 (2016-10-17 01:50) 
应该不是SD卡的问题,我用IMAGE做图标按键可以从SD中正常读取。我原来在论坛问过您,做APP小图标,用ICONVIEW比IMAGE控件好些(都是从SD卡中读取)。所以一直在尝试ICONVIEW的流位图一直没有成功,IMAGE参考的别人的例程可以实现显示啦(但不透明)。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115722
QQ
发表于 2016-10-19 01:07:47 | 显示全部楼层

回 坚持再坚持 的帖子

坚持再坚持:应该不是SD卡的问题,我用IMAGE做图标按键可以从SD中正常读取。我原来在论坛问过您,做APP小图标,用ICONVIEW比IMAGE控件好些(都是从SD卡中读取)。所以一直在尝试ICONVIEW的流位图一直没有成功,IMAGE参考的别人的例程可以实现显示啦(但不透明)。 (2016-10-18 16:45) 
那就还采用这种方法:

先把你的那个流位图,即dta格式的文件,使用B2C小软件转换成C文件,然后测试下,这样就排除了你的SD卡问题,这种方式测试流位图很方便,比你是有SD卡方便。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-14 10:46 , Processed in 0.564483 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表