buiw ,请问我在设置IFORM_SetBGImage()时为何把form上的内容覆盖了呢

qingqing2300 2009-11-27 04:31:13
buiw ,请问我在设置IFORM_SetBGImage()时为何把form上的内容覆盖了呢?
谢谢!
...全文
1662 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingqing2300 2009-12-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chenmeimei_8899 的回复:]
是因为:
IXYCONTAINER_QueryInterface(pMe->mainContainer, AEEIID_WIDGET, &containerWdg);
你这一句查询出来的containerWdg这个Widget没有设置宽和高,两张图片相同之所以没有出现问题,是因为现实的本身就是背景图
[/Quote]
我尝试用其它图片,结果显示正常。
以前的图片可能是太大了吧。
我又换了两张小的图片。结果显示正常了。
PS:代码都没改。
qingqing2300 2009-11-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bxk253387223 的回复:]
确定是在同一个Form上进行操作的吗?
不同的Form是可以覆盖的。
[/Quote]

嗯!我在程序里用了两张图片,一张用于背景,另一张用于显示的。
如果两张图片是一个文件的话,显示正常。
如果两张图片是两个不同的文件,背景就把显示的图片给覆盖了。

代码如下:图片文件名称是“3.jpg”,背景名称为“2.jpg”

int result;
IWidget *containerWdg = NULL;
WidgetPos wp;
WExtent we;
IWidget *imageWdg;
AEEImageInfo info;
IImage* piImage123;
result = ISHELL_CreateInstance(pMe->pIShell, AEECLSID_FORM, (void **)&pMe->mainForm);
result += ISHELL_CreateInstance(pMe->pIShell, AEECLSID_XYCONTAINER, (void **)&pMe->mainContainer);
piImage123 = ISHELL_LoadImage(pMe->pIShell, "2.jpg");
IFORM_SetBGImage(pMe->mainForm, piImage123);
IIMAGE_Release(piImage123);
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);

IIMAGE_GetInfo(pMe->pImage, &info);
we.width = info.cx;
we.height = info.cy;
IWIDGET_SetExtent(imageWdg, &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;

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


谢谢!找错!
FLYUP_CHEN 2009-11-30
  • 打赏
  • 举报
回复
是因为:
IXYCONTAINER_QueryInterface(pMe->mainContainer, AEEIID_WIDGET, &containerWdg);
你这一句查询出来的containerWdg这个Widget没有设置宽和高,两张图片相同之所以没有出现问题,是因为现实的本身就是背景图
givenup 2009-11-28
  • 打赏
  • 举报
回复
[Quote=引用楼主 qingqing2300 的回复:]
buiw ,请问我在设置IFORM_SetBGImage()时为何把form上的内容覆盖了呢?
谢谢!
[/Quote]
应该不会吧,因为底层处理的时候把显示背景的widget放到了容器的最底下啊!
bxk253387223 2009-11-28
  • 打赏
  • 举报
回复
确定是在同一个Form上进行操作的吗?
不同的Form是可以覆盖的。

2,851

社区成员

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

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