高分探讨一下,是不是BUIW里面的一个BUG?
以下是关于触摸屏的,框架代码,文件是Qualcomm\BREWUIWidgets_2.0.1\widgettc\src\ButtonTC.c
static boolean ButtonTC_DefHandleEvent(IController *po, AEEEvent evt,
uint16 wParam, uint32 dwParam)
{
ButtonTC *me = CAST(ButtonTC*, po);
if (!MYWIDGET(me))
{
return FALSE;
}
if (EVT_POINTER_DOWN == evt)
{
WExtent we;
IWIDGET_GetExtent(MYWIDGET(me), &we);
SETAEERECT(&me->rc, 0, 0, we.width, we.height);
me->bPressed = TRUE;
(void) IWIDGET_SetCapture(MYWIDGET(me), 1);
(void) IWIDGET_SetSelected(MYWIDGET(me), 1);
return TRUE;
}
if (EVT_POINTER_MOVE == evt)
{
int x = (int16) AEE_POINTER_GET_X((const char*) dwParam);
int y = (int16) AEE_POINTER_GET_Y((const char*) dwParam);
boolean bSelected = PointInRect(&me->rc, x, y);
if (bSelected != me->bSelected)
{
(void) IWIDGET_SetSelected(MYWIDGET(me), bSelected);
me->bSelected = bSelected;
}
return TRUE;
}
if (EVT_POINTER_UP == evt)
{
int x = (int16) AEE_POINTER_GET_X((const char*) dwParam);
int y = (int16) AEE_POINTER_GET_Y((const char*) dwParam);
(void) IWIDGET_SetCapture(MYWIDGET(me), 0);
(void) IWIDGET_SetSelected(MYWIDGET(me), 0);
if (PointInRect(&me->rc, x, y) && me->bPressed)
{
TCBase_NotifyClick(&me->base, WECLTYPE_CLICK, WETYPE_WIDGET_SELF, 0, 1);
}
me->bPressed = FALSE;
return TRUE;
}
return TCBase_DefHandleEvent(po, evt, wParam, dwParam);
}
主要是MOVE事件,如果该ButtonTC对应的按钮按过一次并完成释放,则第一次光标从外部移入时,会将WIDGET的Selected设置
为TRUE,后续从外部移入时,就不设置(正常处理)。
第一次外部移入时,不应该将Selected设置成TRUE的。
哪位高人能帮我看看!谢谢!