专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Brew

IForm_SetHandler后无法调用新的事件处理函数

发布时间:2010-05-30 20:19:33 文章来源:www.iduyao.cn 采编人员:星星草
求助:IForm_SetHandler后无法调用新的事件处理函数
为Form窗口设置新的事件处理函数,但在点击上下方向按键和softkey的时候,并未进入新的事件处理函数中,谁能告诉我什么原因。
代码如下:

static void menuForm_DrawScreen(menuForm * pMe)
{
int nErr;

nErr = ISHELL_CreateInstance(pMe->piShell, AEECLSID_RootForm, (void **)&(pMe->piRootForm));
nErr = ISHELL_CreateInstance(pMe->piShell, AEECLSID_Form, (void **)&(pMe->iForm));

nErr = IRootForm_PushForm(pMe->piRootForm, pMe->iForm);

HANDLERDESC_INIT(&pMe->hd, (PFNHANDLER)mainMenuForm_HandleEvent, (void*)pMe, NULL);
IForm_SetHandler(pMe->iForm, &pMe->hd);
}

static boolean mainMenuForm_HandleEvent(menuForm* pMe, AEEEvent evt, 
  uint16 wParam, uint32 dwParam)
{
switch (evt) {
case EVT_KEY:
{
switch (wParam) {
// Up arrow key was pressed:
case AVK_UP:
break;
// Down arrow key was pressed:
case AVK_DOWN:
break;
case AVK_SOFT1:
//DBGPRINTF("AVK_SOFT1");
break;
case AVK_SOFT2:
IRootForm_PopForm(pMe->piRootForm);
ISHELL_CloseApplet(pMe->piShell, FALSE);
break;
case AVK_SELECT:
break;
default:
break;
}
}
break;

case EVT_COMMAND:
break;
}

return HANDLERDESC_CALL(&pMe->hd, evt, wParam, dwParam);
}

当在模拟器界面点击上下方向键和softKey键时,并未进入事件函数mainMenuForm_HandleEvent,不知道什么原因

------解决方案--------------------
我想eventHandler是可以接收到这些方向键事件的,但是如果对List widget事件处理,应该使用view model更方便一些,view model 可以认为是一个现成的高级的eventHandler,如
IWIDGET_GetViewModel(piw, &piListViewModel);
LISTENER_Init(&pMe->ListListener, ListListenerCallBack, pMe);
IMODEL_AddListener(piListViewModel, &pMe->ListListener);
在函数ListListenerCallBack处理EVT_MDL_FOCUS_CHANGE和EVT_MDL_FOCUS_SELECT事件。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: