野火电子论坛

 找回密码
 注册

扫一扫,访问微社区

查看: 95|回复: 1

[emWin] iconview

[复制链接]
发表于 2020-1-14 14:34:27 | 显示全部楼层 |阅读模式
#include "DIALOG.h"
#include "ff.h"
#include "Global.h"
#include "usart.h"
#include "GUI.h"
#include "ICONVIEW.h"
#define ID_WINDOW_0      (GUI_ID_USER + 0x00)
#define ID_ICONVIEW_0      (GUI_ID_USER + 0x01)

#define ID_ICONVIEW_0_IMAGE_0 0x00
#define ID_ICONVIEW_0_IMAGE_1 0x01
#define ID_ICONVIEW_0_IMAGE_2 0x02
#define ID_ICONVIEW_0_IMAGE_3 0x03
#define ID_ICONVIEW_0_IMAGE_4 0x04
#define ID_ICONVIEW_0_IMAGE_5 0x05
#define ID_ICONVIEW_0_IMAGE_6 0x06
#define ID_ICONVIEW_0_IMAGE_7 0x07
#define ID_ICONVIEW_0_IMAGE_8 0x08
#define ID_ICONVIEW_0_IMAGE_9 0x09
#define ID_ICONVIEW_0_IMAGE_10 0x0A
#define ID_ICONVIEW_0_IMAGE_11 0x0B



static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] =
{
  { WINDOW_CreateIndirect, "Window", ID_WINDOW_0, 0, 0, 800, 480, 0, 0x0, 0 },
  { ICONVIEW_CreateIndirect, "Iconview", ID_ICONVIEW_0, 0, 0, 800, 480, WM_CF_HASTRANS|WM_CF_SHOW, 0x00830083, 0 },
};

static const char *IconFilename[]={
"0:/Icon/Camera.dta",
"0:/Icon/Clock.dta",
"0:/Icon/Compass.dta",
"0:/Icon/folder.dta",
"0:/Icon/Idea.dta",
"0:/Icon/Music.dta",
"0:/Icon/Photos.dta",
"0:/Icon/Settings.dta",
"0:/Icon/Videos.dta",
"0:/Icon/Weather.dta",
//"0:/Icon/weather1.dta",
//"0:/Icon/AirPort_Utility.dta",
//NULL
};

GUI_BITMAP Bitmap;
char* _acbuffer = NULL;
static void  LoadIcon(const TCHAR * FilePath, ICONVIEW_Handle hIconview)
{

FIL  BMP_File;   // 文件对象
UINT  BMP_FileCount;  // 数据数量
FSIZE_t BMP_FileSize;   // 文件大小
WM_HMEM hMEM;
GUI_LOGPALETTE palette;


f_open( &BMP_File,FilePath,FA_OPEN_EXISTING | FA_READ );
BMP_FileSize = f_size(&BMP_File);
hMEM = GUI_ALLOC_AllocZero(BMP_FileSize);
_acbuffer = GUI_ALLOC_h2p(hMEM);
f_read( &BMP_File,_acbuffer,BMP_FileSize,&BMP_FileCount);
f_close(&BMP_File);
GUI_CreateBitmapFromStream(&Bitmap, &palette, _acbuffer);

ICONVIEW_AddBitmapItem(hIconview, &Bitmap, "");

GUI_ALLOC_Free(hMEM);

}

static void _cbDialog(WM_MESSAGE * pMsg) {

  WM_HWIN      hItem;
  //U32          FileSize;
  int          NCode;
  int          Id;
int          i;
  // USER STAR

所有图标一样

所有图标一样
回复

使用道具 举报

发表于 2020-1-15 18:44:39 | 显示全部楼层
GUI_BITMAP Bitmap是存放位图信息的结构体变量,一个GUI_BITMAP类型的变量只能保存一张位图,你程序里面把好几张位图的信息赋值给了同1个变量。
在iconview里面要用10张图,但是程序里又只有1个变量来保存位图信息,所以就会出现这个情况。
定义10个GUI_BITMAP类型的变量,分别保存10张图的位图信息就可以解决了。

还有就是GUI_LOGPALETTE palette这个调色板变量,如果你流位图需要一直使用,那它也要定义成全局变量。
回复 支持 反对

使用道具 举报

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

本版积分规则

野火电子公众号

手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号-2 大学生ARM嵌入式2群

GMT+8, 2020-1-25 07:08 , Processed in 0.186926 second(s), 30 queries , Gzip On.

野火电子论坛

© 2014-2016 www.firebbs.cn

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