viewportwidget 无法显示内容

qingqing2300 2009-11-11 09:49:28
请问,我在用viewportwidget时,无法显示viewportwidget里面的内容。

代码如下:
ISHELL_CreateInstance(pMe->pIShell, AEECLSID_IMAGEWIDGET, (void **)&imageWdg);
ISHELL_CreateInstance(pMe->pIShell, AEECLSID_VIEWPORTWIDGET, (void **)&pMe->viewportWdg);


pMe->pImage = ISHELL_LoadImage(pMe->pIShell,"3.jpg");
if(imageWdg != NULL)
{
IWIDGET_SetImage(imageWdg, pMe->pImage);
}
else
return FALSE;

IDECORATOR_SetWidget((IDecorator *)pMe->viewportWdg, imageWdg);

IWIDGET_SetProperty(pMe->viewportWdg, PROP_INCREMENT, 10);

请问哪里有错误
全部代码如下:



//if a widget display on the screen,declare it as global variable.
static boolean CreateMainForm(buiw10 *pMe)
{
int result;
IWidget *containerWdg = NULL;
WidgetPos wp;
WExtent we;
IWidget *imageWdg;

result = ISHELL_CreateInstance(pMe->pIShell, AEECLSID_FORM, (void **)&pMe->mainForm);
result += ISHELL_CreateInstance(pMe->pIShell, AEECLSID_XYCONTAINER, (void **)&pMe->mainContainer);

if(result != 0)
return EFAILED;

IFORM_SetResText(pMe->mainForm, FID_TITLE,BUIW10_RES_FILE, IDS_TITLE);
IFORM_SetSoftkeys(pMe->mainForm, BUIW10_RES_FILE, IDS_SOFTKEY1, IDS_SOFTKEY2);

HANDLERDESC_Init(&pMe->mainFormHandler, MainFormHandleEvent, pMe, mainFormFree);
IFORM_SetHandler(pMe->mainForm, &pMe->mainFormHandler);


ISHELL_CreateInstance(pMe->pIShell, AEECLSID_IMAGEWIDGET, (void **)&imageWdg);
ISHELL_CreateInstance(pMe->pIShell, AEECLSID_VIEWPORTWIDGET, (void **)&pMe->viewportWdg);


pMe->pImage = ISHELL_LoadImage(pMe->pIShell,"3.jpg");
if(imageWdg != NULL)
{
IWIDGET_SetImage(imageWdg, pMe->pImage);
}
else
return FALSE;

IDECORATOR_SetWidget((IDecorator *)pMe->viewportWdg, imageWdg);

IWIDGET_SetProperty(pMe->viewportWdg, PROP_INCREMENT, 10);

we.width = 110;
we.height = 110;
IWIDGET_SetExtent(pMe->viewportWdg, &we);

wp.bVisible = TRUE;
wp.x = 10;
wp.y = 10;
IXYCONTAINER_Insert(pMe->mainContainer, pMe->viewportWdg, WIDGET_ZNORMAL, &wp);
//Add your code to here

result = IXYCONTAINER_QueryInterface(pMe->mainContainer, AEEIID_WIDGET, &containerWdg);
result += IFORM_SetWidget(pMe->mainForm, WID_FORM, containerWdg);
IWIDGET_MoveFocus(containerWdg, pMe->viewportWdg);

if(result != 0)
return EFAILED;

ISHELL_SetTimer(pMe->pIShell, 100, TimerHandler, pMe);

IWIDGET_Release(containerWdg);
IWIDGET_Release(imageWdg);
return SUCCESS;
}


static void TimerHandler(buiw10 *pMe)
{
AEEImageInfo info;
int step = 15;

IIMAGE_GetInfo(pMe->pImage, &info);

if((pMe->offsetX + 110) > info.cx) pMe->directX = FALSE;
if(pMe->offsetX < 0)pMe->directX = TRUE;

if(pMe->directX) pMe->offsetX += step; else pMe->offsetX -= step;

IWIDGET_SetProperty(pMe->viewportWdg, PROP_OFFSETX, pMe->offsetX);

if((pMe->offsetY + 110) > info.cy) pMe->directY = FALSE;
if(pMe->offsetY < 0)pMe->directY = TRUE;

if(pMe->directY) pMe->offsetY += step; else pMe->offsetY -= step;

IWIDGET_SetProperty(pMe->viewportWdg, PROP_OFFSETY, pMe->offsetY);

ISHELL_SetTimer(pMe->pIShell, 100, TimerHandler, pMe);
}

...全文
1799 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingqing2300 2009-11-18
  • 打赏
  • 举报
回复
感谢 chenmeimei_8899;
我显示了。呵呵~
qingqing2300 2009-11-18
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wireless_com 的回复:]
BUIW的版本?会不会和theme有关呀
[/Quote]
buiw 版本是2.0.1 我用BREW sdk 是3.1.5的。
theme还像没有关系的,我注释掉theme效果是一样的。

是版本的原因吗?
qingqing2300 2009-11-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 chenmeimei_8899 的回复:]
设置一下imageWdg的extent,设置viewport的extent并不会改变Imagewidget的extent,有时间我试一下,把代码帖给你。
[/Quote]

我把所有代码都贴在我的日记里了。
http://www.douban.com/note/50843842/
还附有运行图片。

帮我看看是怎么回事!
礼!
呵呵~
  • 打赏
  • 举报
回复
BUIW的版本?会不会和theme有关呀
FLYUP_CHEN 2009-11-17
  • 打赏
  • 举报
回复
//if a widget display on the screen,declare it as global variable.
static boolean CreateMainForm(buiw10 *pMe)
{
int result;
IWidget *containerWdg = NULL;
WidgetPos wp;
WExtent we;
IWidget *imageWdg;

result = ISHELL_CreateInstance(pMe->pIShell, AEECLSID_FORM, (void **)&pMe->mainForm);
result += ISHELL_CreateInstance(pMe->pIShell, AEECLSID_XYCONTAINER, (void **)&pMe->mainContainer);

if(result != 0)
return EFAILED;

IFORM_SetResText(pMe->mainForm, FID_TITLE,BUIW10_RES_FILE, IDS_TITLE);
IFORM_SetSoftkeys(pMe->mainForm, BUIW10_RES_FILE, IDS_SOFTKEY1, IDS_SOFTKEY2);

HANDLERDESC_Init(&pMe->mainFormHandler, MainFormHandleEvent, pMe, mainFormFree);
IFORM_SetHandler(pMe->mainForm, &pMe->mainFormHandler);


ISHELL_CreateInstance(pMe->pIShell, AEECLSID_IMAGEWIDGET, (void **)&imageWdg);
ISHELL_CreateInstance(pMe->pIShell, AEECLSID_VIEWPORTWIDGET, (void **)&pMe->viewportWdg);


pMe->pImage = ISHELL_LoadImage(pMe->pIShell,"3.jpg");
if(imageWdg != NULL)
{
IWIDGET_SetImage(imageWdg, pMe->pImage);
}
else
return FALSE;

IDECORATOR_SetWidget((IDecorator *)pMe->viewportWdg, imageWdg);

IWIDGET_SetProperty(pMe->viewportWdg, PROP_INCREMENT, 10);

we.width = 110;
we.height = 110;
IWIDGET_SetExtent(pMe->viewportWdg, &we);
IWIDGET_SetExtent(imageWdg, &we); //add
wp.bVisible = TRUE;
wp.x = 10;
wp.y = 10;
IXYCONTAINER_Insert(pMe->mainContainer, pMe->viewportWdg, WIDGET_ZNORMAL, &wp);
//Add your code to here

result = IXYCONTAINER_QueryInterface(pMe->mainContainer, AEEIID_WIDGET, &containerWdg);
result += IFORM_SetWidget(pMe->mainForm, WID_FORM, containerWdg);
IWIDGET_MoveFocus(containerWdg, pMe->viewportWdg);

if(result != 0)
return EFAILED;

ISHELL_SetTimer(pMe->pIShell, 100, TimerHandler, pMe);

IWIDGET_Release(containerWdg);
IWIDGET_Release(imageWdg);
return SUCCESS;
}


static void TimerHandler(buiw10 *pMe)
{
AEEImageInfo info;
int step = 15;

IIMAGE_GetInfo(pMe->pImage, &info);

if((pMe->offsetX + 110) > info.cx) pMe->directX = FALSE;
if(pMe->offsetX < 0)pMe->directX = TRUE;

if(pMe->directX) pMe->offsetX += step; else pMe->offsetX -= step;

IWIDGET_SetProperty(pMe->viewportWdg, PROP_OFFSETX, pMe->offsetX);

if((pMe->offsetY + 110) > info.cy) pMe->directY = FALSE;
if(pMe->offsetY < 0)pMe->directY = TRUE;

if(pMe->directY) pMe->offsetY += step; else pMe->offsetY -= step;

IWIDGET_SetProperty(pMe->viewportWdg, PROP_OFFSETY, pMe->offsetY);

ISHELL_SetTimer(pMe->pIShell, 100, TimerHandler, pMe);
}
我添加了一句已经可以了,我试过了,可以显示了。
FLYUP_CHEN 2009-11-16
  • 打赏
  • 举报
回复
设置一下imageWdg的extent,设置viewport的extent并不会改变Imagewidget的extent,有时间我试一下,把代码帖给你。
qingqing2300 2009-11-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 alex_goacross 的回复:]
看看image资源载入是否正确。。或者用其他的widget试试看。。做法没问题啊。。。
[/Quote]
我让ImageWidget单独显示了,可以显示的。但要放到viewport 里就不显示了。
是不是我的模拟器哪里没有配置正确呢?
qingqing2300 2009-11-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wireless_com 的回复:]
有报错么?
[/Quote]
没有错误啊,能够运行的。就是显示不了VIEWPORTWIDGET里的内容。我设置viewport widget的颜色和边框都显示了,但是里面的ImageWidget显示不出来。
是什么原因呢?
qingqing2300 2009-11-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 alex_goacross 的回复:]
做个RootForm的实例,然后IROOTFORM_PushForm()将你的Form放到RoomForm里。
[/Quote]
嗯,我放到一个FORM下了。而且PUSH到ROOTFORM 下,没有显示。

是不是我引用的文件 (widget.h 版本),或者模拟器,配置有不对的地方?
  • 打赏
  • 举报
回复
有报错么?
alex_goacross 2009-11-12
  • 打赏
  • 举报
回复
看看image资源载入是否正确。。或者用其他的widget试试看。。做法没问题啊。。。
alex_goacross 2009-11-11
  • 打赏
  • 举报
回复
做个RootForm的实例,然后IROOTFORM_PushForm()将你的Form放到RoomForm里。

2,851

社区成员

发帖
与我相关
我的任务
社区描述
本论坛以AI、WoS 、XR、IoT、Auto、生成式AI等核心板块组成,为开发者提供便捷及高效的学习和交流平台。 高通开发者专区主页:https://qualcomm.csdn.net/
人工智能物联网机器学习 技术论坛(原bbs) 北京·东城区
社区管理员
  • csdnsqst0050
  • chipseeker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧