硬汉嵌入式论坛

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

[emWin] stemwin执行对话框出现问题,按键代码

[复制链接]

4

主题

14

回帖

4

积分

新手上路

积分
4
发表于 2014-8-15 22:08:09 | 显示全部楼层 |阅读模式
问个问题,,一执行GUI_ExecDialogBox,就发不出串口  后面的代码都不执行

代码如下:



//6¸ö°′¼ü  2Ëμ¥  è·èÏ  Ôö¼ó ¼õéù  ¼ìêó   2é¼ˉ/í£Ö1°′Å¥  ¶àᢰ′¼ü·½ê½  pb3  pb4 pb5 pb6 pb7 pb8
//·Ö±eó3éäμ½¼üÅìÏûÏ¢  
#define KEY1  ((GPIOB->IDR)&GPIO_PIN_3)
#define KEY2  ((GPIOB->IDR)&GPIO_PIN_4)
#define KEY3  ((GPIOB->IDR)&GPIO_PIN_5)
#define KEY4  ((GPIOB->IDR)&GPIO_PIN_6)
#define KEY5  ((GPIOB->IDR)&GPIO_PIN_7)
#define KEY6  ((GPIOB->IDR)&GPIO_PIN_8)

//oˉêyÃû£oKeyTask
//void KeyTask(void *p_arg)
void KeyTask(void)
{
    uint8_t ucKeyCode;
   
    //(void)p_arg;  //±üÃa±àòëÆ÷±¨¾ˉ  
   
    while(1)
    {
           
    //bsp_KeyScan();//Âã»ú3ìDòéÕÃë°′Å¥′úÂë
    //    if(ucKeyCode!=KEY_NONE)   //Çy¶ˉ3ìDò′úÂë
        //{   
        //    switch(ucKeyCode)
        //    {
            //    case KEY_DOWN_K1:  
        //        BSP_OS_SemPost(&SEM_SYNCH);  //·¢ËíDÅoÅá¿
            //  break;   
            //    case KEY_DOWN_K2:    //K2°′¼ü
            //  GUI_SendKeyMsg(GUI_KEY_TAB,1);
                //case KEY_DOWN_K3:
                //    GUI_SendKeyMsg(GUI_KEY_ESCAPE,1);
            //    break;
               
                //default:     //ÆäËü°′¼ü°′ÏÂ
            //    break;
               
        //    }
        //}
        if(KEY1==0)  //key1°′ÏÂ
        {
         //GUI_SendKeyMsg(GUI_KEY_TAB,1); //êó¾õÇD»»  
     printf("key0!");//2aêÔ3ìDò            
        }   
    //    GUI_DispStringAt("KEY 0 message " ,240,300);//ÏÔê¾°′¼üÏûÏ¢
        //else
        //{   
        // GUI_SendKeyMsg(GUI_KEY_TAB,0); //Î′°′ÏÂ×′ì¬
         //}  
        /* if(KEY2==0)
        {  
         GUI_SendKeyMsg(GUI_KEY_UP,1); //Ôö¼ó
        }  
        else
        {
         GUI_SendKeyMsg(GUI_KEY_UP,0); //Ôö¼ó
        }
         if(KEY3==0)  
        {
         GUI_SendKeyMsg(GUI_KEY_DOWN,1); //¼õéù
        }
        else
        {
         GUI_SendKeyMsg(GUI_KEY_DOWN,0); //¼õéù
        }
       if(KEY4==0)  
        {
         GUI_SendKeyMsg(GUI_KEY_ENTER,1); //è·èÏ
        }
        else
        {
         GUI_SendKeyMsg(GUI_KEY_ENTER,0); //è·èÏ
        }
         if(KEY5==0)  
        {
        GUI_SendKeyMsg(GUI_KEY_HOME,1); //2Ëμ¥
        }
        else
        {
        GUI_SendKeyMsg(GUI_KEY_HOME,0); //′ò¿aÃüáî
        }
        
        if(KEY6==0)  
        {
        GUI_SendKeyMsg(GUI_KEY_SPACE,1); //Æô¶ˉ
        }
        else
        {
        GUI_SendKeyMsg(GUI_KEY_SPACE,0); //í£Ö1Ãüáî
        }
        */
        
        osDelay(10);//Ñóê±10msèÎÎñ
    }
}
//¾2ì¬êy¾Y×êÔ′±í
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[]=
{
    {FRAMEWIN_CreateIndirect,"Edit winmode",0,90,90,140,130,FRAMEWIN_CF_MOVEABLE}, //ÑÕé«Îêìa
  {EDIT_CreateIndirect,NULL,GUI_ID_EDIT0,10,10,110,20,0,15},
    {EDIT_CreateIndirect,NULL,GUI_ID_EDIT1,10,40,110,20,0,15},
    {BUTTON_CreateIndirect,"OK",GUI_ID_OK,10,80,50,20},
  {BUTTON_CreateIndirect,"Cancel",GUI_ID_CANCEL,70,80,50,20},
};
//êy×é½aÎö  
static char*_apExplain[]=
{
    "This sample shows how to use edit widgets with a",
    "dfafasfd",
    "dfdfdfd",
    "fdfdaff",
    "fsdafawf",
    "fsafasfa",
};
//oˉêy _cbDialog
//2Îêy pMsgÏûÏ¢Ö¸Õë
//·μ»Ø ÎT
//Ãèêö ¶Ô»°¿òμÄ»Øμ÷oˉêy
static void _cbDialog(WM_MESSAGE*pMsg)
{
    int i;   
  int Id;  
    int NCode;        
    WM_HWIN hDlg;      
    WM_HWIN hItem;      
  
    hDlg=pMsg->hWin;    //Ä¿±ê′°¿ú  
    switch(pMsg->MsgId)    //ÏûÏ¢ààDí
    {   
        case WM_INIT_DIALOG:  //3õê¼»ˉdialog
        
   // FRAMEWIN_SetBarColor(WM_GetDialogItem(hDlg,,GUI_BLUE);            
        FRAMEWIN_SetFont(pMsg->hWin,&GUI_Font13_ASCII); //3õê¼»ˉ×Öìå  ¿ò¼ü′°¿úD¡1¤¾ß
        FRAMEWIN_SetTextAlign(pMsg->hWin,GUI_TA_HCENTER);   //±êìaÎÄ×Ö¾óÖD   
        //éèÖñêìaà¸μÄĬèÏ
        for(i=0;i<2;i++)   
        {
            hItem=WM_GetDialogItem(hDlg,GUI_ID_EDIT0+i);    //±à¼-¿òμÄÎêìa  »ñ衶Ի°¿ò ′°¿úμľä±ú
        }   
        break;    //ÖD¶Ï
           
    //    case WM_KEY:      //′°¿ú°′¼üààDí
    //    switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key)  
        // {  
        //    case GUI_KEY_TAB:
        //        GUI_EndDialog(hDlg,1);
              //printf("key0!");//2aêÔ3ìDò
              //GUI_DispStringAt("KEY 0 message " ,240,300);//ÏÔê¾°′¼üÏûÏ¢
        //     break;
            
        //    case GUI_KEY_ENTER:  
        //        GUI_EndDialog(hDlg,0);  
        //    break;
      //    }
   //  break;            
        //case WM_NOTIFY_PARENT: //ÏûÏ¢  óD¸üDÂ
            //Id =WM_GetId(pMsg->hWinSrc);  //ID¶¨òå Ô-′°¿ú
        //  NCode=pMsg->Data.v;   //í¨Öa′úÂë   êy¾YÖμ
        // switch(NCode)  //Ñ¡ÔñÏî
         //  {
            //     case WM_NOTIFICATION_RELEASED:  //±»μã»÷ê±êí·Å
                //    if(Id==GUI_ID_OK)
                //    {
                //        GUI_EndDialog(hDlg,0);
                //    }
                //    if(Id==GUI_ID_CANCEL)
                //    {
                //        GUI_EndDialog(hDlg,0);
                //    }
                    
        //  break;
          //  }
            //    break;
                default:
                    WM_DefaultProc(pMsg);
                  break;
            }
}

//oˉêy _cbDesktop
//2Îêy pMsgÏûÏ¢Ö¸Õë
//·μ»Ø ÎT
//Ãèêö ×àÃæ′°¿úμÄ»Øμ÷oˉêy
static void _cbDesktop(WM_MESSAGE*pMsg)
{
    unsigned int i;
   
    switch(pMsg->MsgId)
    {
        //ÖØ»æ
        case WM_PAINT:
            GUI_SetBkColor(GUI_RED);//±3¾°ÑÕé«»æÖÆ
          GUI_Clear();
      GUI_SetFont(&GUI_Font24_ASCII);
      GUI_DispStringHCenterAt("WIDGET_EditWinmode",160,5);
          GUI_DispNextLine();//»-ò»¸ùÇúÏß
          GUI_SetFont(GUI_DEFAULT_FONT);
          GUI_DispNextLine();
          for(i=0;i<GUI_COUNTOF(_apExplain);i++)
        {
            GUI_DispStringHCenterAt(_apExplain,160,GUI_GetDispPosY());
            GUI_DispNextLine();
        }
            
        break;
    }
}

//oˉêy MainTaskkey
//2Îêy ÎT
//·μ»Ø ÎT
//Ãèêö ÎT

void MainTaskkey(void)
{
    WM_HWIN  hWM_HBKWIN;
   
    GUI_Init();
   
    hWM_HBKWIN = WM_CreateWindow(5,5,480,320,WM_CF_SHOW,0,0);     //′°¿ú3ß′ç 380 230  
        
    WM_SetCallback(hWM_HBKWIN,_cbDesktop);  

    while(1)
    {
        
        /*í¨1y×êÔ′±í ′′½¨×èèû꽶Ի°¿ò*/
         GUI_ExecDialogBox(_aDialogCreate,GUI_COUNTOF(_aDialogCreate),&_cbDialog,0,0,0);  //Õa¸ö¿éÄüêǸöËàÑ-»·
        //GUI_DispStringAt("KEY 0 message " ,240,300);//ÏÔê¾°′¼üÏûÏ¢
        //    GUI_DispStringAt("KEY 0 message " ,240,300);//ÏÔê¾°′¼üÏûÏ¢
  //  GUI_Exec();
        printf("key0!");//2aêÔ3ìD   
    osDelay(10);//Ñóê±10msèÎÎñ         
      //GUI_Delay(1000);//Ñóê±1SÖó
    }
}
回复

使用道具 举报

4

主题

14

回帖

4

积分

新手上路

积分
4
 楼主| 发表于 2014-8-16 00:07:26 | 显示全部楼层
这个查到是阻塞对话框搞起的,现在就是为什么我发送按键消息,对话框没收到这个按键消息,怎么解决的。。
         if(KEY1==0)  //key
        {
               
        GUI_SendKeyMsg(GUI_KEY_TAB,1); //êó¾õÇD»»  
           
        }
回复

使用道具 举报

92

主题

76

回帖

92

积分

初级会员

积分
92
发表于 2014-8-16 13:56:24 | 显示全部楼层
要设置聚焦到相应的控件上面,不同的控件支持的按键消息不一样的,有些控件也是不支持按键消息的,比如text控件就不支持按键效果。

你的没有效果估计是没有聚焦到相应的控件上面。
回复

使用道具 举报

4

主题

14

回帖

4

积分

新手上路

积分
4
 楼主| 发表于 2014-8-16 22:45:17 | 显示全部楼层
我就是切换对话框,现在调试,我就是按下keytab,如果响应,打印串口上来,就是打印不出,什么原因
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-21 13:42 , Processed in 0.172702 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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