OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 17521|回复: 17

emWin 小工具 ICONNIEW的使用

[复制链接]

13

主题

49

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
315
金钱
315
注册时间
2012-8-28
在线时间
22 小时
发表于 2014-9-16 16:04:08 | 显示全部楼层 |阅读模式
5金钱
使用这个软件生成的代码



Add ICONVIEW_AddStreamedBitmapItem();  中添加了一个BMP图片的指针,这个图片是用

生成的*.Dta,通过GUIBuilder加载到函数中生成的十六进制码,
但是显示出来的是一个蓝色的图标,并不是实际的加载进去的图标,如下图:

(实际显示出来的)
代码如下:
static U8 _acImage_0[20016] = {
  0x42, 0x4D, 0x08, 0x00, 0x64, 0x00,。。。。。。。。。。。。。
};
/*********************************************************************
*
*       Defines
*
**********************************************************************
*/

#define ID_WINDOW_0     (GUI_ID_USER + 0x01)
#define ID_ICONVIEW_0   (GUI_ID_USER + 0x02)

#define ID_ICONVIEW_0_IMAGE_0  0x00




/*********************************************************************
*
*       _aDialogCreate
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] =
{
    { WINDOW_CreateIndirect, "Window", ID_WINDOW_0, 0, 0, 1024, 768, 0, 0, 0 },
    { ICONVIEW_CreateIndirect, "Iconview",ID_ICONVIEW_0, 317, 34, 400, 700, 0, 0x00640064, 0},
};
/*********************************************************************
*
*       _GetImageById
*/
static const void * _GetImageById(U32 Id, U32 * pSize)
{
    switch (Id)
    {
    case ID_ICONVIEW_0_IMAGE_0:
        *pSize = sizeof(_acImage_0);
        return (const void *)_acImage_0;
    }
    return NULL;
}

/*********************************************************************
*
*       _cbDialog
*/
static void _cbDialog(WM_MESSAGE * pMsg)
{
    WM_HWIN hItem;
    const void * pData;
    int NCode,Id;
    U32          FileSize;

    switch (pMsg->MsgId)
    {
    case WM_INIT_DIALOG:     // 初始化空间
        hItem = WM_GetDialogItem(pMsg->hWin, ID_ICONVIEW_0);
        pData = _GetImageById(ID_ICONVIEW_0_IMAGE_0, &FileSize);
        ICONVIEW_SetFont(hItem,&GUI_FontHZ16);
        ICONVIEW_AddStreamedBitmapItem(hItem, pData, "测试");
        break;

    case WM_NOTIFY_PARENT:
        Id    = WM_GetId(pMsg->hWinSrc);
        NCode = pMsg->Data.v;
        switch(Id)
        {
        case ID_ICONVIEW_0: // Notifications sent by 'Iconview'
            switch(NCode)
            {
            case WM_NOTIFICATION_CLICKED:
                break;
            case WM_NOTIFICATION_RELEASED:
                break;
            case WM_NOTIFICATION_MOVED_OUT:
                break;
            case WM_NOTIFICATION_SCROLL_CHANGED:
                break;
            case WM_NOTIFICATION_SEL_CHANGED:
                break;
            }
            break;
        }
        break;

    default:
        WM_DefaultProc(pMsg);
        break;
    }
}


/*********************************************************************
*
*       Public code
*
**********************************************************************
*/
/*********************************************************************
*
*       CreateWindow
*/

void ItemSetFramewin(void) {
    WM_HWIN hWin;

    hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbDialog, WM_HBKWIN, 0, 0);

    while(1)
    {
        GUI_Delay(1);
        ReadEvent();

        switch(CurrEvent.event)
        {
        case K_DOWN:
            break;

        case K_UP:
            break;

        case K_nRIGHT:
            break;

        case K_nLEFT:
            break;

        case K_ENTER:
            break;

        case K_RETURN:
            break;
        }
    }
    WM_DeleteWindow(hWin);
}


不知道怎么使用这个小工具,有大神提供个DEMO吗?不胜感激。

最佳答案

查看完整内容[请看2#楼]

首先用BmpCvt生成c文件; 其次用ICONVIEW_AddBitmapItem 而不是ICONVIEW_AddStreamBitmapItem; 然后函数里面用BmpCvt生成C文件中结构体的地址。 如下:ICONVIEW_AddBitmapItem(hItem, &bmsettingIcon_128, "");
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2015-10-9
在线时间
0 小时
发表于 2014-9-16 16:04:09 | 显示全部楼层
首先用BmpCvt生成c文件;
其次用ICONVIEW_AddBitmapItem 而不是ICONVIEW_AddStreamBitmapItem;
然后函数里面用BmpCvt生成C文件中结构体的地址。
如下:ICONVIEW_AddBitmapItem(hItem, &bmsettingIcon_128, "");
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-9-16 16:35:26 | 显示全部楼层
帮顶。。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

12

主题

432

帖子

0

精华

高级会员

Rank: 4

积分
729
金钱
729
注册时间
2012-6-21
在线时间
59 小时
发表于 2014-9-16 16:59:59 | 显示全部楼层
看看安富莱有一个例程,是不是要转成PNG啊?
呵呵。
回复

使用道具 举报

10

主题

274

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
336
金钱
336
注册时间
2013-12-3
在线时间
0 小时
发表于 2014-9-16 17:47:54 | 显示全部楼层
你这是位图流文件? 可以用位图.c 文件来显示就容易了。
不用谢了……
回复

使用道具 举报

13

主题

49

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
315
金钱
315
注册时间
2012-8-28
在线时间
22 小时
 楼主| 发表于 2014-9-17 15:00:49 | 显示全部楼层
回复【4楼】eling13:
---------------------------------
谢谢eling13     你说的确实对,我换成.C的就可以了,但是dta什么的转换的还是不行。
回复

使用道具 举报

6

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2014-8-12
在线时间
32 小时
发表于 2015-3-8 18:17:24 | 显示全部楼层
 回复【5楼】 lushp88 :
---------------------------------
我的换成了.c还是一样不显示,你用的是显示图片的那种方式吗

回复

使用道具 举报

7

主题

35

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
369
金钱
369
注册时间
2014-4-3
在线时间
30 小时
发表于 2015-6-12 15:12:14 | 显示全部楼层
这个函数ICONVIEW_EnableStreamAuto,添加后是可以的。
回复

使用道具 举报

50

主题

159

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
437
金钱
437
注册时间
2014-8-15
在线时间
29 小时
发表于 2015-7-25 11:19:54 | 显示全部楼层
请问这个GUIBuilder是哪个版本的?为什么我的没有IConview这个?
初学STM32,很多不懂,但是我相信坚持一定可以成功,向原子哥学习
回复

使用道具 举报

50

主题

159

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
437
金钱
437
注册时间
2014-8-15
在线时间
29 小时
发表于 2015-7-25 12:44:24 | 显示全部楼层
回复【5楼】lushp88:
---------------------------------
怎么换成C?他打不开.C的
初学STM32,很多不懂,但是我相信坚持一定可以成功,向原子哥学习
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2014-12-13
在线时间
6 小时
发表于 2016-3-31 19:55:51 | 显示全部楼层
张氏拉都 发表于 2015-7-25 12:44
回复【5楼】lushp88:
---------------------------------
怎么换成C?他打不开.C的

请问你的问题解决了吗?我用V5.22版本的GUIBilder添加图标也是一片蓝色
回复

使用道具 举报

50

主题

159

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
437
金钱
437
注册时间
2014-8-15
在线时间
29 小时
发表于 2016-4-14 21:53:37 | 显示全部楼层
ujszmc 发表于 2016-3-31 19:55
请问你的问题解决了吗?我用V5.22版本的GUIBilder添加图标也是一片蓝色

我最后就没用这个方案了~~
初学STM32,很多不懂,但是我相信坚持一定可以成功,向原子哥学习
回复

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2016-4-19
在线时间
3 小时
发表于 2016-4-19 09:57:35 | 显示全部楼层
//
// Initialization of 'Iconview'
//
    hItem = WM_GetDialogItem(pMsg->hWin, ID_ICONVIEW_0);
    ICONVIEW_EnableStreamAuto();
    pData = _GetImageById(ID_ICONVIEW_0_IMAGE_0, &FileSize);
    ICONVIEW_AddStreamedBitmapItem(hItem, pData, "");
回复

使用道具 举报

0

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2015-10-19
在线时间
13 小时
发表于 2017-1-19 12:20:37 | 显示全部楼层
waszhang 发表于 2016-4-19 09:57
//
// Initialization of 'Iconview'
//

谢谢你的方法,添加了 ICONVIEW_EnableStreamAuto(); 这行代码就行了
回复

使用道具 举报

16

主题

173

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2441
金钱
2441
注册时间
2014-11-5
在线时间
348 小时
发表于 2017-2-8 16:18:04 | 显示全部楼层
加了 ICONVIEW_EnableStreamAuto();还是不行呢,vs下怎么使用FramewinDLG.c文件呢?
回复

使用道具 举报

16

主题

173

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2441
金钱
2441
注册时间
2014-11-5
在线时间
348 小时
发表于 2017-2-8 16:18:41 | 显示全部楼层
小丰 发表于 2017-1-19 12:20
谢谢你的方法,添加了 ICONVIEW_EnableStreamAuto(); 这行代码就行了

加了 ICONVIEW_EnableStreamAuto();还是不行呢,vs下怎么使用FramewinDLG.c文件呢?
回复

使用道具 举报

16

主题

173

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2441
金钱
2441
注册时间
2014-11-5
在线时间
348 小时
发表于 2017-2-8 16:49:49 | 显示全部楼层
hello_galaxy 发表于 2017-2-8 16:18
加了 ICONVIEW_EnableStreamAuto();还是不行呢,vs下怎么使用FramewinDLG.c文件呢?

翻看emwin5中文手册,知道怎么做了!!
回复

使用道具 举报

6

主题

75

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
203
金钱
203
注册时间
2013-8-15
在线时间
44 小时
发表于 2018-6-12 11:42:40 | 显示全部楼层
亲,你的问题解决了吗?
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 09:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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