硬汉嵌入式论坛

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

[有问必答] BUTTON 聚焦怎么实现啊   case WM_NOTIFY_PARENT:这个下边怎么改啊··

[复制链接]

8

主题

13

回帖

8

积分

新手上路

积分
8
发表于 2016-4-27 10:48:34 | 显示全部楼层 |阅读模式
static void _cbDialog(WM_MESSAGE * pMsg)
{
    WM_HWIN hItem;
    WM_MESSAGE pMsgInfo;
    int NCode, Id;

    switch (pMsg->MsgId)
    {

        case WM_PAINT:
            GUI_DrawGradientH(0, 44, 240- 1, 272 - 44, 0xdda0dd, 0xe14169);
            GUI_DrawGradientH(240, 44, 480-1, 272-44, 0xe14169, 0xdda0dd);
            
            break;
        
        case WM_INIT_DIALOG:
            /* 创建文本 */
            hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0);
            TEXT_SetTextColor(hItem, GUI_WHITE);
            TEXT_SetFont(hItem, &GUI_FontYahei);
            TEXT_SetText(hItem, "智能家居STemWin客户端");


             _CreateButton(hWin, "liebiao", GUI_ID_BUTTON0,        50,  150, 100,  60, 0);
             _CreateButton(hWin, "jiedianshezhi", GUI_ID_BUTTON1,  170, 150, 100,  60, 0);
             _CreateButton(hWin, "xitongshezhi", GUI_ID_BUTTON2,   290, 150, 100,  60, 0);
             _CreateButton(hWin, "baojingjilu", GUI_ID_BUTTON3,    410, 150, 100,  60, 0);
             _CreateButton(hWin, "zisou", GUI_ID_BUTTON4,          530, 150, 100,  60, 0);
             _CreateButton(hWin, "waibushezhi", GUI_ID_BUTTON5,    650, 150, 100,  60, 0);
             _CreateButton(hWin, "guzhangjilu", GUI_ID_BUTTON6,    50,  390, 100,  60, 0);
             _CreateButton(hWin, "tiaoling", GUI_ID_BUTTON7,       170, 390, 100,  60, 0);
             _CreateButton(hWin, "zijian", GUI_ID_BUTTON8,         290, 390, 100,  60, 0);
             _CreateButton(hWin, "kaijijilu", GUI_ID_BUTTON9,      410, 390, 100,  60, 0);
             _CreateButton(hWin, "biaoding", GUI_ID_BUTTON10,      530, 390, 100,  60, 0);
             _CreateButton(hWin, "gongsijianjie", GUI_ID_BUTTON11, 650, 390, 100,  60, 0);            
            break;
            
        case WM_TIMER:
        
            break;
        
        /*  发送按下的消息 */
        case MSG_SetENTER:             //确认键  ok
            pMsgInfo.MsgId = WM_NOTIFY_PARENT;
            pMsgInfo.hWinSrc = hWinICON;
            pMsgInfo.Data.v = WM_NOTIFICATION_RELEASED;
            WM_SendMessage(pMsg->hWin, &pMsgInfo);   
            break;
        
        /*  设置ICON的聚焦 */     //  k3选择
        case MSG_SetICONFocus:         
            WM_SetFocus(hWinICON);
            break;
        
        /* 删除通过ICON创建的对话框 */    //k2取消
        case MSG_Delect:
            WM_DeleteWindow(hWinInfo);
            break;
            
        case WM_NOTIFY_PARENT:
            Id    = WM_GetId(pMsg->hWinSrc);      /* Id of widget */
            NCode = pMsg->Data.v;                 /* Notification code */
            switch (Id)
            {
                /* 点击ICONVIEW上相应的图标,打开相应的窗口 */
                case GUI_ID_ICONVIEW0:
                    switch (NCode)
                    {
                        case  WM_NOTIFICATION_RELEASED:
                           
                            s_ucSelIconIndex  = ICONVIEW_GetSel(pMsg->hWinSrc);
                        
                            switch( ICONVIEW_GetSel(pMsg->hWinSrc))
                            {
                                /* 视频监控 */
                                case 0:
                                    hWinInfo = GUI_CreateDialogBox(_aDialogCreate1, GUI_COUNTOF(_aDialogCreate1), &_cbCallback1, 0, 0, 0);               
                                    break;   
                                
                                /* 灯光控制 */
                                case 1:
                                    hWinInfo = GUI_CreateDialogBox(_aDialogCreate1, GUI_COUNTOF(_aDialogCreate1), &_cbCallback1, 0, 0, 0);               
                                    break;   
                                
                                /* 智能门窗 */
                                case 2:
                                    hWinInfo = GUI_CreateDialogBox(_aDialogCreate1, GUI_COUNTOF(_aDialogCreate1), &_cbCallback1, 0, 0, 0);               
                                    break;   
                                
                                /* 电器控制 */
                                case 3:
                                    hWinInfo = GUI_CreateDialogBox(_aDialogCreate1, GUI_COUNTOF(_aDialogCreate1), &_cbCallback1, 0, 0, 0);               
                                    break;
                                
                                /* 信息查询 */
                                case 4:
                                    hWinInfo = GUI_CreateDialogBox(_aDialogCreate1, GUI_COUNTOF(_aDialogCreate1), &_cbCallback1, 0, 0, 0);               
                                    break;   
                                
                                /* 安防报警 */
                                case 5:
                                    hWinInfo = GUI_CreateDialogBox(_aDialogCreate1, GUI_COUNTOF(_aDialogCreate1), &_cbCallback1, 0, 0, 0);               
                                    break;   
                                
                                /* 背景音乐 */
                                case 6:
                                    hWinInfo = GUI_CreateDialogBox(_aDialogCreate1, GUI_COUNTOF(_aDialogCreate1), &_cbCallback1, 0, 0, 0);               
                                    break;   
                                
                                /* 情景模式 */
                                case 7:
                                    hWinInfo = GUI_CreateDialogBox(_aDialogCreate1, GUI_COUNTOF(_aDialogCreate1), &_cbCallback1, 0, 0, 0);               
                                    break;   
                                
                                /* 定时管理 */
                                case 8:
                                    hWinInfo = GUI_CreateDialogBox(_aDialogCreate1, GUI_COUNTOF(_aDialogCreate1), &_cbCallback1, 0, 0, 0);               
                                    break;
                                
                                /* 系统设置 */
                                case 9:
                                    hWinInfo = GUI_CreateDialogBox(_aDialogCreate1, GUI_COUNTOF(_aDialogCreate1), &_cbCallback1, 0, 0, 0);               
                                    break;
                                
                                default:
                                    break;
                            }   
                         break;
                    }
                break;
            }
            break;
            
        default:
            WM_DefaultProc(pMsg);
    }
}








static void AppTaskUserIF(void *p_arg)
{
    uint8_t ucKeyCode;

    (void)p_arg;                  
    while (1)
    {               
        ucKeyCode = bsp_GetKey();
        if(ucKeyCode != KEY_NONE)
        {
            switch (ucKeyCode)
            {
                case KEY_DOWN_K1:            
                    BSP_OS_SemPost(&SEM_SYNCH);            
                    break;
               
                case KEY_DOWN_K2:            
                    WM_SendMessageNoPara(hWinMain, MSG_Delect);
                    break;

                case KEY_DOWN_K3:            
                    WM_SendMessageNoPara(hWinMain, MSG_SetICONFocus);
                    break;

                case JOY_DOWN_U:            
                    GUI_SendKeyMsg(GUI_KEY_UP, 1);
                    break;

                case JOY_DOWN_D:            
                    GUI_SendKeyMsg(GUI_KEY_DOWN, 1);
                    break;

                case JOY_DOWN_L:            
                    GUI_SendKeyMsg(GUI_KEY_LEFT, 1);
                    break;

                case JOY_DOWN_R:            
                    GUI_SendKeyMsg(GUI_KEY_RIGHT, 1);
                    break;

                case JOY_DOWN_OK:            
                    WM_SendMessageNoPara(hWinMain, MSG_SetENTER);
                    break;

                default:
                    /* ???üμ??ü?μ2?′|àí */
                    break;
            }
               
        }
   
        BSP_OS_TimeDlyMs(20);         
    }
}
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2016-4-28 01:27:40 | 显示全部楼层
你说的是打开的一个子界面里面的button吗,可以通过TAB键功能切换即可,或者通过这个函数WM_SetFocus
回复

使用道具 举报

8

主题

13

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2016-4-28 11:09:07 | 显示全部楼层

回 eric2013 的帖子

eric2013:你说的是打开的一个子界面里面的button吗,可以通过TAB键功能切换即可,或者通过这个函数WM_SetFocus (2016-04-28 01:27) 
楼主  没懂········
回复

使用道具 举报

8

主题

13

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2016-4-28 11:16:53 | 显示全部楼层

回 eric2013 的帖子

eric2013:你说的是打开的一个子界面里面的button吗,可以通过TAB键功能切换即可,或者通过这个函数WM_SetFocus (2016-04-28 01:27) 
我是想实现  tab键和遥杆结合用   我参考的ATM那个例程没看懂············
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-14 00:54 , Processed in 0.041567 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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