求Form中除title和softkey外范围的时候,用IROOTFORM_GetClientRect出错

wishifef 2009-12-23 11:27:53
以前问的怎么求Form中除了标题和softkey后区域的范围的时候,
有人说用IROOTFORM_GetClientRect();

我是这样用的
typedef struct _imageTest{
AEEApplet a ; // First element of this structure must be AEEApplet
AEEDeviceInfo DeviceInfo; // always have access to the hardware device information
IShell *meIshell;//
IDisplay *meIDisplay;
// add your own variables here...
IRootForm *rootForm;
IForm *mainForm;
IXYContainer *mainContainer;
IWidget *imageWidget;
} imageTest

static boolean CreateMainFormimageTest*pMe)
{
……
AEERect meAeeRect;
……
IROOTFORM_GetClientRect(pMe->rootForm,&pMe->mainContainer,&meAeeRect);
……
}
但是得到的meAeeRect范围还是整个屏幕的宽和高,而不是想要的除去title和softkey的范围,

是不是我的参数传的不对,第二个参数,是不是应该传RootForm自己的IRootContainer,

可是我传这个的时候报错了

望高手指教!谢谢!
...全文
1698 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wishifef 2010-01-22
  • 打赏
  • 举报
回复
谢谢各位的回答!
voidsun 2009-12-30
  • 打赏
  • 举报
回复
问题一、为什么在不同的时间调用IROOTFORM_PushForm结果会不同,
采用哪种方法好些(好像大多时候都是在最后IROOTFORM_PushForm的),
[A]只有做过一次PushForm,RootForm才会更新客户去的大小,所以当第一个Form Push后,以后在调用IROOTFORM_GetClientRect获取的Client区域都是对的。

---先IROOTFORM_PushForm得时候有些东西不出来;

问题二、我想在窗口中间加一个widget,占据除了标题和软键外的所有空间,怎么做更稳妥点,
移植或者不同的模拟器不会出问题!
[A]获取RootContainer,直接向RootContainer插入你的Widget,那么就可以覆盖到Title和SoftKey。
平常的Form都没限制在Client Rect内,所以是不能覆盖Title和SoftKey的。


问题三、是不是我的二个参数出的错,该传什么参数!
[A]参数没错。
wishifef 2009-12-25
  • 打赏
  • 举报
回复
谢谢大家的解答!
//结构体上面已经有了,就不发了
static boolean CreateMainForm(gridWidget1202 *pMe)
{

//得到标题和软键控件
IWidget *F_titleWidget;
IWidget *F_softKeyWidget;
//窗口背景
IImage * bgImage;
IWidget * containerWdg;//form中的widget接口

WExtent wt_list;
WExtent we;
IWidget *imageStaticWidget;
IImage *tuImage;

//做实验 得到窗口标题和软键的范围
WExtent wt_title;//窗口标题的范围
WExtent wt_softkey;//下面左右键的范围

//用于得到除了标题和softKey后的宽和高
AEERect meAeeRect;
WExtent wt_image;
//list范围的具体值

ISHELL_CreateInstance(pMe->meIshell,AEECLSID_FORM,(void**)&pMe->mainForm);
ISHELL_CreateInstance(pMe->meIshell,AEECLSID_XYCONTAINER,(void**)&pMe->mainContainer);
// IROOTFORM_PushForm(pMe->rootForm,pMe->mainForm);----------------------------------------------(1)
IROOTFORM_GetClientRect(pMe->rootForm,NULL,&meAeeRect);

//主窗口的外观
IFORM_GetTitleWidget((IForm *)pMe->rootForm,&F_titleWidget);
IFORM_GetSoftkeyWidget((IForm *)pMe->rootForm,&F_softKeyWidget);
IWIDGET_SetFlags(F_titleWidget,IDF_ALIGN_MIDDLE|IDF_ALIGN_CENTER);
IFORM_SetTitle(pMe->mainForm,L"gridWidget1202");
IFORM_SetSoftkeys(pMe->mainForm,GRIDWIDGET_RES_FILE,IDS_STRING_LEFT,IDS_STRING_RIGHT);

IWIDGET_GetExtent(F_titleWidget,&wt_title);
IWIDGET_GetExtent(F_softKeyWidget,&wt_softkey);
……
}

我测试用的是brew自带的那四个模拟器的第四个(最大的那个);240*320;

1楼的方法可以得到指针,

2楼说的正是我疑惑的地方;

3楼的方法试过了,不行;

4楼的方法也试过了,

如果在 case EVT_APP_START:
// Add your code here...
if(CreateMainForm(pMe)==0)
{
IROOTFORM_PushForm(pMe->rootForm,pMe->mainForm);
}
return(TRUE);

我测试用的是brew自带的那四个模拟器的第四个(最大的那个);240*320;

时候用IROOTFORM_PushForm的话,测得
标题*F_titleWidget范围wt_title 为: 宽240, 高15
软键*F_softKeyWidget范围wt_softkey 为: 宽240 高15
用IROOTFORM_GetClientRect得到的范围为: 宽240 高320 (全屏宽高)


在上面(1)处用IROOTFORM_PushForm的时候,测得数据为:
标题*F_titleWidget范围wt_title 为: 宽240, 高12
软键*F_softKeyWidget范围wt_softkey 为: 宽240 高13
用IROOTFORM_GetClientRect得到的范围为: 宽240 高295 (全屏宽高)

问题一、为什么在不同的时间调用IROOTFORM_PushForm结果会不同,
采用哪种方法好些(好像大多时候都是在最后IROOTFORM_PushForm的),

---先IROOTFORM_PushForm得时候有些东西不出来;

问题二、我想在窗口中间加一个widget,占据除了标题和软键外的所有空间,怎么做更稳妥点,
移植或者不同的模拟器不会出问题!

问题三、是不是我的二个参数出的错,该传什么参数!


谢谢楼上各位,
laozhong110 2009-12-25
  • 打赏
  • 举报
回复
在IROOTFORM_PushForm后调用IROOTFORM_GetClientRect
bxk253387223 2009-12-24
  • 打赏
  • 举报
回复
试试这个:
IROOTFORM_GetClientRect(pMe->rootForm,NULL,&meAeeRect);
  • 打赏
  • 举报
回复
pMe->mainContainer 的问题吧
FLYUP_CHEN 2009-12-23
  • 打赏
  • 举报
回复
感觉你这样是没有错误的,可以把你整个代码贴出来看看,如果你有softkey和title的话,得到的区域肯定不是整个屏幕的大小的,你可以做一下测试利用IForm_getWidget(pIForm,WID_TITLE,&piwTitle)和IForm_getWidget(pIForm,WID_SOFTKEY,&piwsoft);去分别得到他的title和softkey的指针,看能不能得到,如果得到的话那就是title或者softkey,如果得到是NULL那肯定是没有的

2,851

社区成员

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

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