硬汉嵌入式论坛

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

[emWin] 在新建的对话框中的按钮无法接受焦点,触摸不响应相关的函数。

[复制链接]

14

主题

17

回帖

59

积分

初级会员

积分
59
发表于 2014-7-18 22:57:26 | 显示全部楼层 |阅读模式
#include "includes.h"
#include "MainTask.h"

static WM_HWIN  bkchild;

/*
*********************************************************************************************************
*                            建立实时监控界面的资源表            
*********************************************************************************************************
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate0[] = {
  { WINDOW_CreateIndirect,   0,           0,                 0,   0,   480, 280, 0, 0  },
  { TEXT_CreateIndirect,     NULL,     GUI_ID_TEXT0,         5,  0,   110,  49, TEXT_CF_HCENTER|TEXT_CF_VCENTER},
  { BUTTON_CreateIndirect,   NULL,     GUI_ID_BUTTON0,       5,  49,  110,  40 },
  { BUTTON_CreateIndirect,   NULL,     GUI_ID_BUTTON1,       5,  89, 110, 40 },
  { BUTTON_CreateIndirect,   NULL,     GUI_ID_BUTTON2,       5,  129, 110, 40 },
  { BUTTON_CreateIndirect,   NULL,     GUI_ID_BUTTON3,       5,  169, 110,  40 },
  { BUTTON_CreateIndirect,   NULL,     GUI_ID_BUTTON4,       5,  209, 110,  41 },
  { TEXT_CreateIndirect,     NULL,     GUI_ID_TEXT1,         30,  253, 200,  40, TEXT_CF_LEFT},

};

/*
*********************************************************************************************************
*    函数名:   PaintDialogRTCWindows
*    功能说明:实时监控界面的重绘
*    返回值: 无
*    ·        
*********************************************************************************************************
*/
void PaintDialogRTCWindows(WM_MESSAGE * pMsg)
{
  WM_HWIN hWin = pMsg->hWin;
    WM_SelectWindow(hWin);
    GUI_SetBkColor(GUI_WHITE);
       GUI_SetColor(GUI_GREEN);
       GUI_FillRect(200,250,400,263);  //实现不了,不知道为什么
}

/*
*********************************************************************************************************
*    函数名: InitDialogRTCWinds
*    功能说明: 初始化对话框
*    形参:  pMsg
*    返回值:无            
*********************************************************************************************************
*/
void InitDialogRTCWindows(WM_MESSAGE * pMsg)
{
    GUI_RECT Rect;
    WM_HWIN hWin = pMsg->hWin;
    WM_SelectWindow(hWin);
    GUI_SetBkColor(GUI_WHITE);
    GUI_SetColor(GUI_BLACK);
    GUI_SetPenSize(40);
    GUI_DrawRect(5,0,114,50); //实现不了,不知道为什么
    GUI_SetColor(GUI_GREEN);
    GUI_FillRect(5,250,475,253);  //实现不了,不知道为什么
    GUI_SetColor(GUI_GREEN);
    GUI_UC_SetEncodeUTF8();
    TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT0),&GUI_FontYaHeiB22);
    TEXT_SetText(WM_GetDialogItem(hWin,GUI_ID_TEXT0),"实时监控");
    TEXT_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_TEXT0),GUI_GREEN);
    TEXT_SetFont(WM_GetDialogItem(hWin,GUI_ID_TEXT1),&GUI_FontYaHe20);
    TEXT_SetText(WM_GetDialogItem(hWin,GUI_ID_TEXT1),"告警:");                   //无显示,不知道为什么,确定字库中是有“告警:”。
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),BUTTON_CI_UNPRESSED,GUI_WHITE);
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON1),BUTTON_CI_UNPRESSED,GUI_WHITE);
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON2),BUTTON_CI_UNPRESSED,GUI_WHITE);
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON3),BUTTON_CI_UNPRESSED,GUI_WHITE);
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON4),BUTTON_CI_UNPRESSED,GUI_WHITE);
    GUI_UC_SetEncodeUTF8();
    BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),&GUI_FontYaHeiB22);
    BUTTON_SetText(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),"操作控制");
    BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON1),&GUI_FontYaHeiB22);
    BUTTON_SetText(WM_GetDialogItem(hWin,GUI_ID_BUTTON1),"光伏监控");
    BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON2),&GUI_FontYaHeiB22);
    BUTTON_SetText(WM_GetDialogItem(hWin,GUI_ID_BUTTON2),"储能监控");
    BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON3),&GUI_FontYaHeiB22);
    BUTTON_SetText(WM_GetDialogItem(hWin,GUI_ID_BUTTON3),"负荷监控");   
    BUTTON_SetFont(WM_GetDialogItem(hWin,GUI_ID_BUTTON4),&GUI_FontYaHeiB22);
    BUTTON_SetText(WM_GetDialogItem(hWin,GUI_ID_BUTTON4),"返回");
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),BUTTON_CI_UNPRESSED,GUI_LIGHTCYAN);
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON1),BUTTON_CI_UNPRESSED,GUI_WHITE);        
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON2),BUTTON_CI_UNPRESSED,GUI_WHITE);
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON3),BUTTON_CI_UNPRESSED,GUI_WHITE);
    BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON4),BUTTON_CI_UNPRESSED,GUI_WHITE);   


}




/*
*********************************************************************************************************
*    函数名: _cbCallbackRTCWindows
*    功能说明: 实时监控界面的回调函数
*    形参:  pMsg
*    返回值:无               
*********************************************************************************************************
*/
void _cbCallback0(WM_MESSAGE * pMsg)
{  
    int NCode, Id;
  WM_HWIN hWin = pMsg->hWin;
    switch (pMsg->MsgId)
    {
        case WM_PAINT:
                  PaintDialogRTCWindows(pMsg);
          / break;
        case WM_INIT_DIALOG:
             InitDialogRTCWindows(pMsg);
            break;

        case WM_NOTIFY_PARENT:
            Id = WM_GetId(pMsg->hWinSrc);
            NCode = pMsg->Data.v;        
            switch (Id)
            {

         case GUI_ID_BUTTON0:
                    switch(NCode)
                    {
                        case WM_NOTIFICATION_CLICKED:                                                
                        BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),BUTTON_CI_UNPRESSED,GUI_LIGHTCYAN);
                        BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON1),BUTTON_CI_UNPRESSED,GUI_WHITE);        
                        BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON2),BUTTON_CI_UNPRESSED,GUI_WHITE);
                        BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON3),BUTTON_CI_UNPRESSED,GUI_WHITE);
                        BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON4),BUTTON_CI_UNPRESSED,GUI_WHITE);   



                    }
        BUTTON_SetDefaultBkColor(GUI_WHITE,BUTTON_CI_UNPRESSED);
                    break;
         case GUI_ID_BUTTON1:
                    switch(NCode)
                    {
                        case WM_NOTIFICATION_CLICKED:
                        BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),BUTTON_CI_UNPRESSED,GUI_WHITE);
                        BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON1),BUTTON_CI_UNPRESSED,GUI_LIGHTCYAN);        
                        BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON2),BUTTON_CI_UNPRESSED,GUI_WHITE);
                        BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON3),BUTTON_CI_UNPRESSED,GUI_WHITE);   
                        BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON4),BUTTON_CI_UNPRESSED,GUI_WHITE);            

                    }
        BUTTON_SetDefaultBkColor(GUI_WHITE,BUTTON_CI_UNPRESSED);
                    break;  
         case GUI_ID_BUTTON2:
                    switch(NCode)
                    {
                        case WM_NOTIFICATION_CLICKED:
                        BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),BUTTON_CI_UNPRESSED,GUI_WHITE);
                        BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON1),BUTTON_CI_UNPRESSED,GUI_WHITE);        
                        BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON2),BUTTON_CI_UNPRESSED,GUI_LIGHTCYAN);
                        BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON3),BUTTON_CI_UNPRESSED,GUI_WHITE);   
                        BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON4),BUTTON_CI_UNPRESSED,GUI_WHITE);   

                    }
        BUTTON_SetDefaultBkColor(GUI_WHITE,BUTTON_CI_UNPRESSED);
                    break;
         case GUI_ID_BUTTON3:
                    switch(NCode)
                    {
                        case WM_NOTIFICATION_CLICKED:
                        BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON0),BUTTON_CI_UNPRESSED,GUI_WHITE);
                        BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON1),BUTTON_CI_UNPRESSED,GUI_WHITE);        
                        BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON2),BUTTON_CI_UNPRESSED,GUI_WHITE);
                        BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON3),BUTTON_CI_UNPRESSED,GUI_LIGHTCYAN);   
                        BUTTON_SetBkColor(WM_GetDialogItem(hWin,GUI_ID_BUTTON4),BUTTON_CI_UNPRESSED,GUI_WHITE);

                    }
        BUTTON_SetDefaultBkColor(GUI_WHITE,BUTTON_CI_UNPRESSED);
                    break;                                       
                case GUI_ID_BUTTON4:
                    if(NCode==WM_NOTIFICATION_RELEASED)                                                               
                        GUI_EndDialog(hWin, 0);                                          
            WM_DeleteWindow(bkchild);                                 
                    break;
            }
            break;
    }

    WM_DefaultProc(pMsg);   
}


/*
*********************************************************************************************************
*    函数名: APP_RCT
*    功能说明: 实时监控界面的函数,   
*    形参:  WM_HWIN hWin
*    返回值:无               
*********************************************************************************************************
*/
void APP_RCT(WM_HWIN hWin) // 传进来的是WM_HBKWIN,该函数是由点击桌面上的小图标连接近来的函数。
{
     bkchild=GUI_CreateDialogBox(_aDialogCreate0, GUI_COUNTOF(_aDialogCreate0), _cbCallback0, hWin, 0, 0);
}

为解决的问题有标红,其中最大的问题是触摸按钮没有任何反应,也关闭了不了窗口,按钮里面的函数不能相应,好像就是窗口不使能的状况一样。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107220
QQ
发表于 2014-7-18 23:37:30 | 显示全部楼层
每个按钮消息后面这么都有这个函数    BUTTON_SetDefault。。。。,多余了,去掉。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-21 23:25 , Processed in 0.253307 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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