硬汉嵌入式论坛

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

[emWin] ICONVIEW按前面图标,后面的消失不显示,再去按后面的又出现,前面的又消失。。求解

[复制链接]

4

主题

10

回帖

22

积分

新手上路

积分
22
发表于 2016-7-27 18:25:20 | 显示全部楼层 |阅读模式
ICONVIEW按前面图标,后面的消失不显示,再去按后面的又出现,前面的又消失。。求解答。。

代码如下:

#include "MainTask.h"

GUI_MEMDEV_Handle    hMempic;//存储设备句柄,用于绘制背景图片

/*****BITMAP_ITEM 定义,用于ICONVIEW*****/

typedef struct{
    const GUI_BITMAP *pBitmap;
    const char *pText;
}BITMAP_ITEM;

/*
*********************************************************************************************************
*                                          数组
*********************************************************************************************************
*/

static const BITMAP_ITEM _aBitmapItem[]={
    { &bma,"haha"   },
    { &bmb,"heihei" },
    { &bmc,"aiyou"  },
};

/*
*********************************************************************************************************
*    函 数 名: background_init
*    功能说明: 背景加载初始化
*    形    参: 无
*    返 回 值: 无
*********************************************************************************************************
*/
static void background_init(void)
{
    hMempic = GUI_MEMDEV_CreateFixed(0,                 //创建一个存储设备
                                     0,
                                     LCD_GetXSize(),
                                     LCD_GetYSize(),
                                     GUI_MEMDEV_HASTRANS,
                                     GUI_MEMDEV_APILIST_16,
                                     GUICC_M565);

    GUI_MEMDEV_Select(hMempic);   //选中存储设备
  GUI_JPEG_Draw(_ac_win7, sizeof(_ac_win7), 0, 0); //将背景图片绘制到存储设备中
}

/*
*********************************************************************************************************
*    函 数 名: _loadbackground
*    功能说明: 加载背景
*    形    参: 无
*    返 回 值: 无
*********************************************************************************************************
*/

static void _loadbackground(void)
{
    GUI_MEMDEV_Select(0);  //选中屏幕
    GUI_MEMDEV_WriteAt(hMempic,0,0); //将内存设备中的数据绘制到屏幕
}

/*
*********************************************************************************************************
*    函 数 名: _cbBkWindow
*    功能说明: 桌面窗口回调函数        
*    形    参: pMsg  回调参数
*    返 回 值: 无
*********************************************************************************************************
*/
void _cbBkWindow(WM_MESSAGE *pMsg){
    int Id,Ncode;
    switch(pMsg->MsgId)
    {
        case WM_PAINT:
            _loadbackground(); //加载背景
            break;
        case WM_NOTIFY_PARENT:
            Id=WM_GetId(pMsg->hWinSrc);
            Ncode=pMsg->Data.v;
            switch(Id)
            {
                case GUI_ID_ICONVIEW0:
                    switch(Ncode)
                    {
                        case WM_NOTIFICATION_CLICKED:
                            break;
                        case WM_NOTIFICATION_RELEASED:
                            switch(ICONVIEW_GetSel(pMsg->hWinSrc))
                            {
                                case 0:
                                    break;
                                case 1:
                                    break;
                                case 2:
                                    break;
                            }
                            break;
                    }
                break;
            }
            break;
    }
}

/*
*********************************************************************************************************
*    函 数 名: MainTask
*    功能说明: GUI主函数
*    形    参: 无
*    返 回 值: 无
*********************************************************************************************************
*/
void MainTask(void)
{
    int i;
    ICONVIEW_Handle hWinICON;
    GUI_Init();
    WM_MULTIBUF_Enable(1); //多缓冲使能
    background_init();
    _loadbackground();
    WM_SetCallback(WM_HBKWIN, _cbBkWindow);
    hWinICON = ICONVIEW_CreateEx(
                 20,                 /* 小工具的最左像素(在父坐标中)*/
                           50,               /* 小工具的最上像素(在父坐标中)*/
                             800,            /* 小工具的水平尺寸(单位:像素)*/
                             480,         /* 小工具的垂直尺寸(单位:像素)*/
                 WM_HBKWIN,                         /* 父窗口的句柄。如果为0 ,则新小工具将成为桌面(顶级窗口)的子窗口 */
                             WM_CF_SHOW | WM_CF_HASTRANS,       /* 窗口创建标记。为使小工具立即可见,通常使用 WM_CF_SHOW */
                 0,//ICONVIEW_CF_AUTOSCROLLBAR_V,     /* 默认是0,如果不够现实可设置增减垂直滚动条 */
                             GUI_ID_ICONVIEW0,                     /* 小工具的窗口ID */
                             82,                     /* 图标的水平尺寸 */
                             80);/* 图标的垂直尺寸 */
   
   
    /* 向ICONVIEW 小工具添加新图标 */
    for (i = 0; i < GUI_COUNTOF(_aBitmapItem); i++)
    {   
        ICONVIEW_AddBitmapItem(hWinICON, _aBitmapItem.pBitmap, _aBitmapItem.pText);
    }
   
    /* 设置小工具的背景色 32 位颜色值的前8 位可用于alpha混合处理效果*/
    ICONVIEW_SetBkColor(hWinICON, ICONVIEW_CI_SEL, GUI_WHITE | 0x80000000);
   

   
    /* 设置图标在x 或y 方向上的间距。*/
    ICONVIEW_SetSpace(hWinICON, GUI_COORD_X, 50);
   
    /* 设置对齐方式 在5.22版本中最新加入的 */
    ICONVIEW_SetIconAlign(hWinICON, ICONVIEW_IA_HCENTER|ICONVIEW_IA_TOP);
  ICONVIEW_SetFont(hWinICON, &GUI_Font13B_ASCII);
  WM_SetFocus(hWinICON);
    while(1)
    {
        GUI_Delay(50);
    }
}

/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/

按中间的图标,第三个消失

按中间的图标,第三个消失

又按第三个,第三个出现,第一个消失

又按第三个,第三个出现,第一个消失
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2016-7-28 10:09:05 | 显示全部楼层
1.png
回复

使用道具 举报

4

主题

10

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2016-7-31 20:56:27 | 显示全部楼层

回 eric2013 的帖子

eric2013: (2016-07-28 10:09) 
改小了,还是不行。。[s:128]
回复

使用道具 举报

4

主题

10

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2016-7-31 21:07:54 | 显示全部楼层

回 eric2013 的帖子

我把背景图片去掉,设置个背景色就不会出现这种问题,,背景图片是rgb565的,图标是用的V5那个智能家居的图标是32位色的,,和这个有关系?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2016-8-2 10:54:05 | 显示全部楼层

回 wangyi 的帖子

wangyi:我把背景图片去掉,设置个背景色就不会出现这种问题,,背景图片是rgb565的,图标是用的V5那个智能家居的图标是32位色的,,和这个有关系? (2016-07-31 21:07) 
应该没有什么关系。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-17 23:54 , Processed in 0.042369 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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