BUIW高手们 我快疯了 快来帮帮我把!万分感谢

wolfcao8 2009-07-01 08:46:20
我最近在学习BUIW,需要用BUIW 写一个游戏,工程建立好了 但是想建立一个菜单,LISTWIDGET里的ITEM怎么也显示不出来。
谁能来帮帮我看看 我写的东西有什么问题。


int nErr = SUCCESS;
IWidget *piw = NULL;
IWidget *pisw = 0;
IWidget *pisw1 = 0;
IVectorModel *pIVectMod;
IBitmap *pib = 0;


// create the root form
nErr = ISHELL_CreateInstance(me->pIShell, AEECLSID_ROOTFORM, (void **)&me->piRootForm);

// create the form
if(SUCCESS == nErr) {
nErr = ISHELL_CreateInstance(me->pIShell, AEECLSID_FORM, (void **)&me->piForm);
}

nErr += ISHELL_CreateInstance(me->pIShell,AEECLSID_VECTORMODEL,(void**)&pIVectMod);


//wade
nErr = ISHELL_CreateInstance(me->pIShell, AEECLSID_LISTWIDGET, (void **)&piw);
if(SUCCESS == nErr)
{
IWIDGET_SetItemHeight(piw,30);
IWIDGET_SetItemWidth(piw,240);
IWIDGET_SetBGColor(piw, rgbFrmBg);
nErr = IFORM_SetWidget(me->piForm, WID_FORM, piw);//把LISTWIDGET挂到FORM下

}

//建立一个STATICWIDGET来作为LIST的一个ITEM
nErr = ISHELL_CreateInstance(me->pIShell, AEECLSID_STATICWIDGET, (void **)&pisw);
if(SUCCESS == nErr)
{

IWIDGET_SetFGColor(pisw, rgbFrmBg);
IWIDGET_SetFlags(pisw, IDF_ALIGN_LEFT);
IWIDGET_SetText(pisw, awchText, TRUE);
IWIDGET_SetModel(pisw,(IModel*)pIVectMod);
IDECORATOR_SetWidget((IDecorator *)piw, pisw);//将TATICWIDGET挂到LISTWIDGET上面
}

RELEASEIF(pIVectMod);
RELEASEIF(pisw);
RELEASEIF(piw);


// set some keys and titles

IFORM_SetText(me->piForm, FID_TITLE, awchTitle);
IFORM_SetText(me->piForm, FID_SOFTKEY1, awchSoftkey1);
IFORM_SetText(me->piForm, FID_SOFTKEY2, awchSoftkey2);

// push the form to the root form
nErr = IROOTFORM_PushForm(me->piRootForm, me->piForm);

// if there have been no failures up to this point then return success
return nErr;
...全文
866 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
alex_goacross 2009-12-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 givenup 的回复:]
(1)vectormodel应该与listwidget相联系,而不应该是与staticwidget相联系。
(2)要设置listwidget的大小,才能显示。
[/Quote]

同意
voidsun 2009-12-30
  • 打赏
  • 举报
回复
代码可真不是一般的乱,要让ListWidget正确显示,要设置Item的高度及宽度
用下面两个接口函数试一试:
IWIDGET_SetItemHeight
IWIDGET_SetItemWidth
qzlyc 2009-12-21
  • 打赏
  • 举报
回复
你怎么没用到容器啊 ,我先它ITEM INSERT到容器再把容器PushForm,我也是新手,多指教!谢谢
givenup 2009-07-02
  • 打赏
  • 举报
回复
(1)vectormodel应该与listwidget相联系,而不应该是与staticwidget相联系。
(2)要设置listwidget的大小,才能显示。
wolfcao8 2009-07-02
  • 打赏
  • 举报
回复
这个是我按照你的方法最新写的CODE 但是还是不能显示 各位能不能帮我看看为什么 再这里跪谢了
int nErr=0;
IBitmap *pib = 0;
WidgetPos dwpos;
WExtent we;
WExtent oldwe;

// reset widget position
dwpos.x = dwpos.y = 0;

me->DeviceInfo.wStructSize = sizeof(me->DeviceInfo);
ISHELL_GetDeviceInfo(me->pIShell,&me->DeviceInfo);

nErr = ISHELL_CreateInstance(me->pIShell, AEECLSID_DISPLAY, (void **)&(me->pIDisplay));

// get an instance of root container
nErr = ISHELL_CreateInstance(me->pIShell, AEECLSID_ROOTCONTAINER, (void *)(&me->picRoot));
if (SUCCESS != nErr) {
return FALSE;
}

// query interface to root containers widget
nErr = IROOTCONTAINER_QueryInterface(me->picRoot, AEEIID_WIDGET, (void *)(&me->piwRoot));
if (SUCCESS != nErr) {
return FALSE;
}

// get the device bitmap
nErr = IDISPLAY_GetDeviceBitmap(me->pIDisplay, &pib);
if (SUCCESS != nErr) {
return FALSE;
}

// set the root container extent, and get display canvas
{
AEEBitmapInfo biDevice;
IBITMAP_GetInfo(pib, &biDevice, sizeof(biDevice));
SETAEERECT(&(me->rcRoot), 0, 0, (short) biDevice.cx, (short) biDevice.cy);
nErr = ISHELL_CreateInstance(me->pIShell, AEECLSID_DISPLAYCANVAS, (void**)&(me->piCanvas));
if (SUCCESS != nErr) {
IBITMAP_Release(pib);
return FALSE;
}
}

nErr = IDISPLAYCANVAS_SetDisplay((IDisplayCanvas*)me->piCanvas, me->pIDisplay);
if (SUCCESS != nErr) {
return FALSE;
}

IROOTCONTAINER_SetCanvas(me->picRoot, me->piCanvas, &(me->rcRoot));

// begin creating all widgets here
// --- title widget
nErr = ISHELL_CreateInstance(me->pIShell, AEECLSID_STATICWIDGET, (void **)&(me->piwTitle));
if (SUCCESS != nErr) {
return FALSE;
}
IWIDGET_SetFlags(me->piwTitle, IDF_ALIGN_CENTER|IDF_ALIGN_MIDDLE);
IWIDGET_SetText(me->piwTitle, copter, TRUE);
// set extent
IWIDGET_GetPreferredExtent(me->piwTitle, &we);
if(we.width < (me->DeviceInfo).cxScreen) {
we.width = (me->DeviceInfo).cxScreen;
}
IWIDGET_SetExtent(me->piwTitle, &we);
// set location
dwpos.x += 0;
dwpos.y += 0;
dwpos.bVisible = TRUE;
// save the extent
oldwe = we;
// insert widget into root container
IROOTCONTAINER_Insert(me->picRoot, me->piwTitle, WIDGET_ZNORMAL,&dwpos);
RELEASEIF(me->piwTitle);

// --- text widget
nErr = ISHELL_CreateInstance(me->pIShell, AEECLSID_LISTWIDGET , (void **)&(me->piwText));
if (SUCCESS != nErr) {
return FALSE;
}
// set extent
IWIDGET_GetPreferredExtent(me->piwText, &we);
we.width = (me->DeviceInfo).cxScreen - 2;
we.height = 200;
IWIDGET_SetExtent(me->piwText, &we);
// set location
dwpos.x = 0;
dwpos.y += oldwe.height + 7;
dwpos.bVisible = TRUE;
// save the extent
oldwe = we;
// insert widget into root container
IROOTCONTAINER_Insert(me->picRoot, me->piwText, WIDGET_ZNORMAL, &dwpos);


// --- text widget
nErr = ISHELL_CreateInstance(me->pIShell, AEECLSID_ITEMWIDGET, (void **)&(me->piwText1));
if (SUCCESS != nErr) {
return FALSE;
}
// set extent
IWIDGET_GetPreferredExtent(me->piwText1, &we);
we.width = (me->DeviceInfo).cxScreen - 2;
we.height = 30;
IWIDGET_SetExtent(me->piwText1, &we);
IWIDGET_SetText((me->piwText1), awchTextCtlTitle,TRUE);
IDECORATOR_SetWidget((IDecorator *)me->piwText, (me->piwText1));

955

社区成员

发帖
与我相关
我的任务
社区描述
为开发者提供高通丰富的解决方案及全面技术下载内容。本版以AI人工智能、WoS移动笔记本、XR、IoT 物联网、Auto 汽车、生成式AI等核心板块组成,为开发者提供一个便捷及高效的学习交流平台。
人工智能物联网机器学习 企业社区 北京·东城区
社区管理员
  • Qualcomm开发
  • csdnsqst0050
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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