|
程序如下,我想用按钮触发,然后改变背景颜色!黄色白色来回切换!!!弄了好久我的按键怎么就触发不了,难道是底层有错,可是我在往外打印数据的时候是没有什么问题的啊!
大神们,帮帮忙!实在是不知道怎么解决了!!!![s:126]
WM_HWIN hButton_Mode;
GUI_COLOR BKColor = GUI_YELLOW;
#define USER_ID_BUTTON0 (GUI_ID_USER + 1)
void MainTask_LayNew(void)
{
GUI_Init();
WM_SetCreateFlags(WM_CF_MEMDEV);
BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);
WM_EnableMemdev(WM_HBKWIN);
WM_SetCallback( WM_HBKWIN, _cbBkWindow);
WM_SetFocus( WM_HBKWIN);
hButton_Mode = BUTTON_CreateEx(50, 50, 600, 300, WM_HBKWIN, WM_CF_SHOW, 0, USER_ID_BUTTON0);
BUTTON_SetFont( hButton_Mode, GUI_FONT_24_1);
BUTTON_SetText( hButton_Mode, "Mode");
BUTTON_SetBkColor( hButton_Mode, BUTTON_CI_UNPRESSED, GUI_WHITE);
while(1)
{
GUI_Delay(10);
}
}
回调函数:
static void _cbBkWindow( WM_MESSAGE * pMsg)
{
WM_HWIN hWin = pMsg->hWin;
int NCode;
int Id;
char CharBuf[20];
switch( pMsg->MsgId)
{
case WM_PAINT:
GUI_SetBkColor( BKColor); //0xE6783E
GUI_Clear();
GUI_SetColor(GUI_BLACK);
GUI_SetFont(GUI_FONT_8X16X3X3);
sprintf( CharBuf,"%d:%d\n", calendar.hour, calendar.min);
GUI_DispStringAt( CharBuf, 100, 5);
break;
case WM_NOTIFY_PARENT:
Id = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;
printf("BUTTON \r\n");
if( NCode == WM_NOTIFICATION_CLICKED)
{
switch(Id)
{
case USER_ID_BUTTON0:
if(BKColor == GUI_YELLOW)
BKColor = GUI_WHITE;
else
BKColor = GUI_YELLOW;
WM_InvalidateWindow( WM_HBKWIN);
break;
}
}
break;
case WM_TOUCH:
printf("Touch \r\n");
if(BKColor == GUI_YELLOW)
BKColor = GUI_WHITE;
else
BKColor = GUI_YELLOW;
WM_InvalidateWindow( WM_HBKWIN);
break;
default:
WM_DefaultProc(pMsg);
}
}
这是我的触摸底层函数调用:
int GUI_TOUCH_X_MeasureX(void)
{
u16 x,y;
if( TP_Scan(0) == 1)
{
x=tp_dev.x[0];
printf(" tp_dev.x[1] = %d \r\n", x);
}
return x;
}
int GUI_TOUCH_X_MeasureY(void)
{
u16 x,y;
if( TP_Scan(0) == 1)
{
y=tp_dev.y[0];
printf(" tp_dev.y[2] = %d \r\n", y);
}
return y;
}
求能人指导一下错误在哪里!灰常感谢! |
|