硬汉嵌入式论坛

 找回密码
 立即注册
查看: 6763|回复: 2
收起左侧

[emWin] 为什么我的按钮无法触发的

[复制链接]

5

主题

5

回帖

5

积分

新手上路

积分
5
发表于 2014-10-13 17:28:55 | 显示全部楼层 |阅读模式
程序如下,我想用按钮触发,然后改变背景颜色!黄色白色来回切换!!!弄了好久我的按键怎么就触发不了,难道是底层有错,可是我在往外打印数据的时候是没有什么问题的啊!
大神们,帮帮忙!实在是不知道怎么解决了!!!![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;
}
求能人指导一下错误在哪里!灰常感谢!
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2014-10-13 18:19:15 | 显示全部楼层
这个函数去掉:    BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2014-10-13 18:21:11 | 显示全部楼层
因为使用了皮肤色以后,其余修改背景色的就不可以了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-12 11:53 , Processed in 0.210443 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表