|
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) *********************************/ |
-
按中间的图标,第三个消失
-
又按第三个,第三个出现,第一个消失
|