欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

怎么更改widget状态

更新时间: 2014-01-05 02:46:17 责任编辑: Author_N1

 

如何更改widget状态?
我不知道brew里面有没有“活动”这个词,我想实现当widget A接收到方向键时,使widget B处于活动状态,这时再按方向键,就由B来处理。 我试了
  IWidget_MoveFocus(A, B );
  IWIDGET_SetSelected(B,false);
  IWIDGET_SetSelected(A,true);
  IWidget_SetFocus(B,false);
  IWidget_SetFocus(A,true);
这几个函数都不行,虽然焦点移动到了B,但按键事件还是被A接收到了,除非用点击一下B,B才能接收到事件,请问要做哪些设置才能让B能按收到事件。请大家帮忙.

注:我的A在一个container_a内,而container_a和B又都是container_main的孩子,我试了把焦点从container_a从移出来,还是不行。



--参考方法--
发送一个avk_?啊
--参考方法--
是不是应该使用 IWidget_MoveFocus(pw, B ); pw是根容器或者container_main对应的widget,不应该用A。

--参考方法--
可能是你重载了A或者是B的事件了,
typedef struct _test{
AEEApplet a ;
AEEDeviceInfo DeviceInfo; 

IShell *meIshell;//
IDisplay *meIDisplay;
IRootForm *rootForm;
IForm *mainForm;

IXYContainer *mainContainer;

IWidget *text1Widget;
IWidget *text2Widget;
IXYContainer *aContaienr;
} test;


void testFouce(gridWidget1202 *pMe)
{
int result = 0;
WidgetPos wp;
WExtent tsWE;
IWidget *testWidget=NULL;
ISHELL_CreateInstance(pMe->meIshell,AEECLSID_ROOTFORM,(void**)&pMe->rootForm);
result = ISHELL_CreateInstance(pMe->meIshell, AEECLSID_FORM, (void **)&(pMe->mainForm));
result += ISHELL_CreateInstance(pMe->meIshell, AEECLSID_XYCONTAINER, (void **)&pMe->mainContainer);
result += ISHELL_CreateInstance(pMe->meIshell, AEECLSID_XYCONTAINER, (void **)&pMe->aContaienr);
result += ISHELL_CreateInstance(pMe->meIshell,AEECLSID_TEXTWIDGET,(void**)&pMe->text1Widget);
result += ISHELL_CreateInstance(pMe->meIshell,AEECLSID_TEXTWIDGET,(void**)&pMe->text2Widget);


tsWE.height=30;
tsWE.width=150;
IWIDGET_SetExtent(pMe->text1Widget,&tsWE);
wp.x=10;
wp.y=10;
wp.bVisible=TRUE;
result = IXYCONTAINER_Insert(pMe->aContaienr,pMe->text1Widget, WIDGET_ZNORMAL, &wp);

result = IXYCONTAINER_QueryInterface(pMe->aContaienr, AEEIID_WIDGET, (void**)&testWidget);
tsWE.height=150;
tsWE.width=240;
IWIDGET_SetExtent(testWidget,&tsWE);
wp.x=0;
wp.y=0;
wp.bVisible=TRUE;
result = IXYCONTAINER_Insert(pMe->mainContainer,testWidget, WIDGET_ZNORMAL, &wp);

tsWE.height=30;
tsWE.width=180;
IWIDGET_SetExtent(pMe->text2Widget,&tsWE);
wp.x=10;
wp.y=200;
wp.bVisible=TRUE;
result = IXYCONTAINER_Insert(pMe->mainContainer, pMe->text2Widget, WIDGET_ZNORMAL, &wp);

result = IXYCONTAINER_QueryInterface(pMe->mainContainer, AEEIID_WIDGET, (void**)&pMe->m_pWidget);
result += IFORM_SetWidget(pMe->mainForm, WID_FORM, pMe->m_pWidget);
IROOTFORM_PushForm(pMe->rootForm,pMe->mainForm);
}


 case EVT_APP_START:testFouce(pMe);return(TRUE);

case EVT_KEY:



if(wParam == AVK_UP)
{
IFORM_GetWidget(pMe->mainForm, WID_FORM, (IWidget **)&pWidget);
IWIDGET_MoveFocus(pWidget, (IWidget *)WIDGET_FOCUS_NEXT);
IWIDGET_Release(pWidget);
}

if(wParam == AVK_DOWN)
{
IFORM_GetWidget(pMe->mainForm, WID_FORM, (IWidget **)&pWidget);
IWIDGET_MoveFocus(pWidget, (IWidget *)WIDGET_FOCUS_PREV);
IWIDGET_Release(pWidget);
}
return(TRUE);
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:46:17
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/14240/
本文WWW.DOC100.NET DOC100.NET版权所有。