中级会员
- 积分
- 315
- 金钱
- 315
- 注册时间
- 2012-8-28
- 在线时间
- 22 小时
|
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, "");
|