BREW输入法的设置

xiaoli880924 2010-12-28 06:26:50
我有一个简单的输入界面,一个标准的ITEXTCTL控件,用ITEXTCTL_SetSoftKeyMenu() 关联一个SoftMenu,这样在SoftMenu中会多出一个输入法的菜单项,现在该菜单项会产生一个EVT_COMMAND事件,该事件由ITEXTCTL控件处理,它会弹出一个输入法的选择菜单(同时ITEXTCTL控件被ITEXTCTL_HandleEvent设置成了非机会状态),将菜单的所有事件也都是由ITEXTCTL控件处理(ITEXTCTL_HandleEvent)。
在我们公司的带键盘的手机上都是这样,没有问题,部分手机虽然没有弹出这个菜单但也正常的切换了输入法。在全触摸无键盘的LGk v500上跟其他带键盘的手机一样正常,但是在其他三个无键盘全触摸的手机(一个是酷派S60、酷派E230、中兴C-X736)就不行了。在由ITEXTCTL控件处理了SoftMenu那个输入法的菜单项的EVT_COMMAND后,就不在处理任何事件了。他正确响应了SoftMenu的输入法的菜单项EVT_COMMAND事件,弹出了OEM输入法菜单,但是之后任何的事件就不能再响应了。
我之前不通过ITEXTCTL_SetSoftKeyMenu() 关联一个SoftMenu菜单来设置输入法是正常,所有事件在ITEXTCTL控件上就ITEXTCTL控件处理,在菜单上就菜单处理,这都没有问题,也通过了电信的UBT测试。我是奇怪。如果是这些全触摸的手机用到了ITEXTCTL_SetSoftKeyMenu(),该如何处理输入法的设置?一个中兴,一个酷派都出现一样的问题和症状,是不是全触摸无键盘的手机在这里的处理都是一样的,或是OEM在这里有什么约定?


///////////////////////////////////在输入状态下的事件处理函数,其中的ShowSearch是把当前的所有控件重画一遍,并把程序的状态再设置为当前状态。如果你知道问题的答案,加我的Q:281627710,我也可以另外给分

boolean Search_HandleEvent(theApp * pMe, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
AEERect rc;
AEERect rc2;


if ( IMENUCTL_HandleEvent(pMe->m_MenuForSoft,eCode,wParam,dwParam) )
{

return TRUE;
}
if (ITEXTCTL_HandleEvent(pMe->m_SearchInput, eCode, wParam, dwParam) )
{

return TRUE;
}

switch (eCode)
{
case EVT_POINTER_DOWN:
{
IMENUCTL_GetRect(pMe->m_MenuForSoft,&rc) ;
ITEXTCTL_GetRect(pMe->m_SearchInput,&rc2);
if(Is_PT_In_Rect(pMe,&rc))
{
ITEXTCTL_SetActive(pMe->m_SearchInput,FALSE);
if(IMENUCTL_IsActive(pMe->m_MenuForSoft))
{

if( IMENUCTL_HandleEvent(pMe->m_MenuForSoft,eCode,wParam,dwParam) )
{
return TRUE;
}
}
else
{
IDISPLAY_ClearScreen(pMe->a.m_pIDisplay);
IMENUCTL_SetActive(pMe->m_MenuForSoft,TRUE);
IMENUCTL_Redraw(pMe->m_MenuForSoft);
ITEXTCTL_Redraw(pMe->m_SearchInput);
IDISPLAY_Update(pMe->a.m_pIDisplay);
return TRUE;
}

}
else if(Is_PT_In_Rect(pMe,&rc2))
{
IMENUCTL_SetActive(pMe->m_MenuForSoft,FALSE);
if(ITEXTCTL_IsActive(pMe->m_SearchInput))
{
if( ITEXTCTL_HandleEvent(pMe->m_SearchInput,eCode,wParam,dwParam) )
{
return TRUE;
}
}
else
{
IDISPLAY_ClearScreen(pMe->a.m_pIDisplay);
ITEXTCTL_SetActive(pMe->m_SearchInput,TRUE);
IMENUCTL_Redraw(pMe->m_MenuForSoft);
ITEXTCTL_Redraw(pMe->m_SearchInput);
IDISPLAY_Update(pMe->a.m_pIDisplay);
return TRUE;

}
}
if (ITEXTCTL_HandleEvent(pMe->m_SearchInput,eCode,wParam,dwParam))
{
return TRUE;
}
if (IMENUCTL_HandleEvent(pMe->m_MenuForSoft,eCode,wParam,dwParam))
{
return TRUE;
}

}
return TRUE;
case EVT_COMMAND:
{
if(ITEXTCTL_HandleEvent(pMe->m_SearchInput, eCode, wParam, dwParam) )
{
return TRUE;
}

Search_OnCommand(pMe,wParam);
}
return TRUE;
case EVT_KEY:
{
switch(wParam)
{
case AVK_SELECT:
{
if(ITEXTCTL_IsActive(pMe->m_SearchInput))
{
MEMSET(pMe->m_pszSearchText,0,sizeof(pMe->m_pszSearchText));
ITEXTCTL_GetText(pMe->m_SearchInput,(AECHAR*)pMe->m_pszSearchText,MAX_INPUT_LEN);
}
IDISPLAY_ClearScreen(pMe->a.m_pIDisplay);
IMENUCTL_Redraw(pMe->m_MenuForSoft);
ITEXTCTL_Redraw(pMe->m_SearchInput);
IDISPLAY_Update(pMe->a.m_pIDisplay);

if (ITEXTCTL_HandleEvent(pMe->m_SearchInput,eCode,wParam,dwParam))
{
return TRUE;
}
if (IMENUCTL_HandleEvent(pMe->m_MenuForSoft,eCode,wParam,dwParam))
{
return TRUE;
}
}
return TRUE;
case AVK_CLR:
{
if(!(ITEXTCTL_IsActive(pMe->m_SearchInput)) && !(IMENUCTL_IsActive(pMe->m_MenuForSoft)) && !pMe->m_bSuspend)
{

MEMSET(pMe->m_pszSearchText,0,sizeof(pMe->m_pszSearchText));
ITEXTCTL_GetText(pMe->m_SearchInput,(AECHAR*)pMe->m_pszSearchText,MAX_INPUT_LEN);
ShowSearch(pMe);
return TRUE;

}

if((ITEXTCTL_IsActive(pMe->m_SearchInput) && ITEXTCTL_GetCursorPos(pMe->m_SearchInput)==0)||
IMENUCTL_IsActive(pMe->m_MenuForSoft))
{
ITEXTCTL_SetActive(pMe->m_SearchInput,FALSE);
IMENUCTL_SetActive(pMe->m_MenuForSoft,FALSE);
ReadyForMainMenu(pMe);
ShowMainMenu(pMe);
}
else
{
if(ITEXTCTL_IsActive(pMe->m_SearchInput))
{
if(ITEXTCTL_HandleEvent(pMe->m_SearchInput,eCode,wParam,dwParam))
return TRUE;
}
}
}
return TRUE;
}

}
return ITEXTCTL_HandleEvent(pMe->m_SearchInput, eCode, wParam, dwParam);
case EVT_APP_SUSPEND:
MEMSET(pMe->m_pszSearchText,0,sizeof(pMe->m_pszSearchText));
ITEXTCTL_GetText(pMe->m_SearchInput,(AECHAR*)pMe->m_pszSearchText,MAX_INPUT_LEN);
ITEXTCTL_SetActive(pMe->m_SearchInput,FALSE);
IMENUCTL_SetActive(pMe->m_MenuForSoft,FALSE);
return TRUE;
case EVT_APP_RESUME:
ShowSearch(pMe);
return TRUE;
default:
{
if(ITEXTCTL_HandleEvent(pMe->m_SearchInput,eCode,wParam,dwParam) )
{
return TRUE;
}

if (IMENUCTL_HandleEvent(pMe->m_MenuForSoft,eCode,wParam,dwParam) )
{
return TRUE;
}
}
return FALSE;
}

return FALSE;
}
...全文
2144 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
conalin 2011-01-26
  • 打赏
  • 举报
回复
问题解决了吗?
我适配过COOLPAD_E230输入法。
  • 打赏
  • 举报
回复
全触摸手机的实现上有些不同
xiaoli880924 2011-01-21
  • 打赏
  • 举报
回复
有什么不同?怎么个不同法啊
xiaoli880924 2011-01-19
  • 打赏
  • 举报
回复
这都没人回答,分不够还是咋滴?

2,851

社区成员

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

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