emwin自定义消息问题

原文地址::https://blog.csdn.net/qq_38800089/article/details/79017385?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase

相关文章

1、emWin 2天速成实例教程005_控件聚焦和用户消息的使用方法----https://blog.csdn.net/qq576494799/article/details/77160674?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-2

 

例如我要定义一个WM_IC的消息

1.在emwin窗口文件的头文件.h文件中声明 #define WM_IC (WM_USER + 0x00)//自定义消息

2.然后在 switch (pMsg->MsgId) {....}中定义一个case WM_IC:...break;

然后就是想在地方产生此消息用WM_SendMessageNoPara(WM_GetClientWindow(hDlg),WM_IC)即可

其中WM_GetClientWindow为返回客户端窗口句柄。具体在《emWin5中文手册》窗口管理器(WM)中14.5WM API这一节中。

#include "DIALOG.h"
#include "3DDLG.h"
#include "EmWinHZFont.h"
#include "shezhi_winDLG.h"
#include "delay.h"
#include "led.h"
#include "rc522.h"
#include "tftlcd.h"
#include "ltdc.h"

/*********************************************************************
*
*       Defines
*
**********************************************************************
*/
#define ID_FRAMEWIN_0 (GUI_ID_USER + 0x00)
#define ID_BUTTON_1 (GUI_ID_USER + 0x01)//设置 3
#define ID_BUTTON_2 (GUI_ID_USER + 0x02)//主页 4
#define ID_BUTTON_3 (GUI_ID_USER + 0x03)//配置 5

#define ID_BUTTON_4 (GUI_ID_USER + 0x04)//状态 1
#define ID_BUTTON_5 (GUI_ID_USER + 0x05)//位置 2
#define ID_BUTTON_6 (GUI_ID_USER + 0x06)//位置 2

#define ID_TEXT_1 (GUI_ID_USER + 0x07)//打印机温度
#define ID_TEXT_2 (GUI_ID_USER + 0x08)//打印机温度
#define ID_TEXT_3 (GUI_ID_USER + 0x09)//打印机温度

static int m=1,n=0;//m为行,n为列
BUTTON_SKINFLEX_PROPS Props1;
u8 flag1=1,flag2=1,flag3=1;
char IC_buf0[2];
char IC_buf1[2];
char IC_buf2[2];
char IC_buf3[2];
/**********外部变量声明***************/
extern u16 info;
extern unsigned char IC_SN[4]; //卡号     
extern u8 RS485buf[80];
extern u8 show_IC;
/**********外部变量声明***************/


const FRAMEWIN_SKINFLEX_PROPS pProps={ GUI_WHITE,GUI_WHITE,GUI_WHITE,
                                        GUI_WHITE,GUI_WHITE,                                        
                                          0,
                                          5,
                                          5,
                                          5,
                                          1,
                                          5,
                                        };

static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
    { FRAMEWIN_CreateIndirect, "3D", ID_FRAMEWIN_0, 0, 0, 480, 272, 0, 0x0, 0 },
    { BUTTON_CreateIndirect, "Button", ID_BUTTON_1, 0, 0, 470, 86, 0, 0x0, 0 },//
    { BUTTON_CreateIndirect, "Button", ID_BUTTON_2, 160, 86, 160, 87, 0, 0x0, 0  },//
    { BUTTON_CreateIndirect, "Button", ID_BUTTON_3, 320, 86, 160, 87, 0, 0x0, 0}, //
    { BUTTON_CreateIndirect, "Button", ID_BUTTON_4, 0, 173, 160, 62, 0, 0x0, 0  },//
    { BUTTON_CreateIndirect, "Button", ID_BUTTON_5, 160, 173, 160, 62, 0, 0x0, 0 },//
    { BUTTON_CreateIndirect, "Button", ID_BUTTON_6, 320, 173, 160, 62, 0, 0x0, 0},//
     
    { TEXT_CreateIndirect, "Text", ID_TEXT_1, 60, 20, 26, 20, 0, 0x64, 0 },     
    { TEXT_CreateIndirect, "Text", ID_TEXT_2, 80, 20, 160, 50, 0, 0x0, 0 },
    { TEXT_CreateIndirect, "Text", ID_TEXT_3, 310, 55, 26, 20, 0, 0x64, 0 },
};

    

static void _cbDialog(WM_MESSAGE * pMsg) 
{
    WM_HWIN hItem,hItem1,hItem2,hItem3,hItem4,hItem5;
    WM_HWIN hText1,hText2,hText3;

    hItem1= WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1);  
    hItem2= WM_GetDialogItem(pMsg->hWin, ID_BUTTON_2);
    hItem3= WM_GetDialogItem(pMsg->hWin, ID_BUTTON_3);
    hItem4= WM_GetDialogItem(pMsg->hWin, ID_BUTTON_5);
    hItem5= WM_GetDialogItem(pMsg->hWin, ID_BUTTON_6);
    
    hText1=WM_GetDialogItem(pMsg->hWin, ID_TEXT_1);
    hText2=WM_GetDialogItem(pMsg->hWin, ID_TEXT_2);    
    hText3=WM_GetDialogItem(pMsg->hWin, ID_TEXT_3);
    
    WM_HWIN XZ_hItem[2][2]={hItem2,hItem3,hItem4,hItem5};//button1,

  int     NCode;
  int     Id;
  switch (pMsg->MsgId) {
    case WM_INIT_DIALOG:

                hItem = pMsg->hWin;
                FRAMEWIN_SetSkinFlexProps(&pProps,FRAMEWIN_SKINFLEX_PI_ACTIVE);
              
                BUTTON_GetSkinFlexProps(&Props1, BUTTON_SKINFLEX_PI_FOCUSSED);
                Props1.aColorFrame[0] = 0x007FB13C;
                Props1.aColorFrame[1] = 0x008FfF8F;
                Props1.aColorFrame[2] = 0x008FfF8F;
                Props1.aColorUpper[0]=0x008FfF8F;
                Props1.aColorUpper[1]=0x008FfF8F;
                Props1.aColorLower[0]=0x008FfF8F;
                Props1.aColorLower[1]=0x008FfF8F;
                Props1.Radius = 6;
                BUTTON_SetSkinFlexProps(&Props1, BUTTON_SKINFLEX_PI_FOCUSSED);//被选中之后的颜色
                
                FRAMEWIN_SetTextColor(hItem,GUI_BLACK);
                FRAMEWIN_SetTextAlign(hItem, GUI_TA_LEFT);
                FRAMEWIN_SetTitleHeight(hItem, 30);
                FRAMEWIN_SetFont(hItem, &GUI_FontHZ24);
                FRAMEWIN_SetText(hItem, "welcome");
              
                TEXT_SetFont(hText1, &GUI_Font16B_1);
                TEXT_SetText(hText1,"ID:");
                TEXT_SetFont(hText2, &GUI_Font16B_1); 
                TEXT_SetText(hText2," ");                 
                
                //初始化BUTTON1            
                        hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1);
                        BUTTON_SetText(hItem, "");
                //初始化BUTTON2
                        hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_2);
                        WM_SetFocus(hItem2);
                        BUTTON_SetText(hItem, "");
            //    //初始化BUTTON3
                        hItem = WM_GetDialogItem(pMsg->hWin,ID_BUTTON_3);
                        BUTTON_SetFocussable(hItem,1);
                        BUTTON_SetText(hItem, "");
                //初始化 BUTTON4
            //        
                        hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_4);
                        BUTTON_SetText(hItem, "");         
                 //初始化BUTTON5
                        hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_5);
                        BUTTON_SetText(hItem, "");    
                //初始化BUTTON6
                        hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_6);
                        BUTTON_SetText(hItem, "");    
                break;
    case WM_KEY://按键控制
    switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) {
        case GUI_KEY_UP:
            m--;
            if(m<0) m=0;
            WM_SetFocus(XZ_hItem[m][n]);
            break;
        
        case GUI_KEY_DOWN:
            m++;
            if(m>1) m=1;
            WM_SetFocus(XZ_hItem[m][n]);
            break;
        
        case GUI_KEY_LEFT:
            n--;
            if(n<0) n=0;
            WM_SetFocus(XZ_hItem[m][n]);
            break;
        
        case GUI_KEY_RIGHT:
            n++;
            if(n>1) n=1;
            WM_SetFocus(XZ_hItem[m][n]);
            break;
        case GUI_KEY_END:
             GUI_EndDialog(pMsg->hWin, 0);
             Createsehzhi_win();
    }
    break;
        case WM_IC:
            if(show_IC){
                sprintf((char*)IC_buf0,"%0x",IC_SN[0]);
                sprintf((char*)IC_buf1,"%0x",IC_SN[1]);
                sprintf((char*)IC_buf2,"%0x",IC_SN[2]);
                sprintf((char*)IC_buf3,"%0x",IC_SN[3]);

                TEXT_SetFont(hText1, &GUI_Font16B_1);
                TEXT_SetText(hText1,"ID:");
                TEXT_SetFont(hText2, &GUI_Font16B_1); 
                TEXT_SetText(hText2,IC_buf0);                 
            }
            else{
                TEXT_SetText(hText1,"ID:");
                TEXT_SetText(hText2," ");
            }
        break;
  default:
    WM_DefaultProc(pMsg);
    break;
  }
  
}

/*********************************************************************
*
*       Public code
*
**********************************************************************
*/
/*********************************************************************
*
*       Create3D
*/
WM_HWIN Create3D(void) {
    WM_HWIN hWin;  
    hWin = GUI_CreateDialogBox(_aDialogCreate,GUI_COUNTOF(_aDialogCreate),_cbDialog, WM_HBKWIN,0,0);
  return hWin;
}

// USER START (Optionally insert additional public code)
// USER END

/*************************** End of file ****************************/
————————————————
版权声明:本文为CSDN博主「muzi_2017」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_38800089/article/details/79017385

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值