OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3583|回复: 1

EMWIN BUTTON显示实验修改问题

[复制链接]

9

主题

31

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2017-8-9
在线时间
83 小时
发表于 2019-1-12 10:31:33 | 显示全部楼层 |阅读模式
1金钱
[mw_shl_code=applescript,true]#include "DIALOG.h"
#include "ButtonUse.h"
#include "led.h"
//#include "beep.h"
//////////////////////////////////////////////////////////////////////////////////         
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//ALIENTEK STM32F103战舰开发板
//STemWin BUTTON使用
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
//创建日期:2015/4/10
//版本:V1.0
//版权所有,盗版必究。
//Copyright(C) 广州市星翼电子科技有限公司 2014-2024
//All rights reserved                                                                          
//////////////////////////////////////////////////////////////////////////////////

#define ID_FRAMEWIN_0 (GUI_ID_USER + 0x00)
#define ID_BUTTON_0 (GUI_ID_USER + 0x01)
#define ID_BUTTON_1 (GUI_ID_USER + 0x02)

static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
  { FRAMEWIN_CreateIndirect, "Framewin", ID_FRAMEWIN_0, 0, 0, 240, 320, 0, 0x64, 0 },
  { BUTTON_CreateIndirect, "LED0", ID_BUTTON_0, 40, 40, 80, 80, 0, 0, 0 },
  { BUTTON_CreateIndirect, "LED1", ID_BUTTON_1, 140, 40, 80, 80, 0, 0, 0 },
};

//对话框回调函数
static void _cbDialog(WM_MESSAGE * pMsg)
{
        WM_HWIN hItem;
        int     NCode;
        int     Id;

        switch (pMsg->MsgId)
        {
                case WM_INIT_DIALOG:

                        //初始化对话框
                        hItem = pMsg->hWin;
                        FRAMEWIN_SetTitleHeight(hItem, 80);
                        FRAMEWIN_SetText(hItem, "Test");
                        FRAMEWIN_SetFont(hItem, GUI_FONT_24_ASCII);
                        FRAMEWIN_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
                        FRAMEWIN_SetTextColor(hItem, 0x0000FFFF);
               
                        //初始化BUTTON0
                        hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
                        BUTTON_SetFont(hItem, GUI_FONT_24_ASCII);
      BUTTON_SetText(hItem, "led0");
                       
                        //初始化BUTTON1
                        hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_1);
                        BUTTON_SetText(hItem, "led1");
                        BUTTON_SetFont(hItem, GUI_FONT_24_ASCII);
                        break;
                       
                case WM_NOTIFY_PARENT:
                        Id    = WM_GetId(pMsg->hWinSrc);
                        NCode = pMsg->Data.v;
                        switch(Id)
                        {
                                case ID_BUTTON_0: //BUTTON_0的通知代码,控制LED1
                                        switch(NCode)
                                        {
                                                case WM_NOTIFICATION_CLICKED:
                                                        break;
                                                case WM_NOTIFICATION_RELEASED: //按钮被按下并释放
                                                        LED1=~LED1;                //LED1反转
                                                        //BEEP=~BEEP;
                                                        break;       
                                        }
                                        break;
                                case ID_BUTTON_1: //BUTTON_1的通知代码,控制BEEP
                                        switch(NCode)
                                        {
                                                case WM_NOTIFICATION_CLICKED:
                                                        break;
                                                case WM_NOTIFICATION_RELEASED:
                                                        LED0=~LED0;                //蜂鸣器反转
                                                        //LED1=~LED1;
                                                        break;
                                        }
                                        break;
                        }
                        break;
                default:
                        WM_DefaultProc(pMsg);
                        break;
        }
}

//创建一个对话框
WM_HWIN CreateFramewin(void)
{
        WM_HWIN hWin;

        hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
        return hWin;
}

//BUTTO演示函数
void ButtonUse_Demo(void)
{
        WM_HWIN hWin;
        hWin=CreateFramewin();
//while(1)
//{
//GUI_Delay(10);
//}
}

[/mw_shl_code]

问题1:我自己按照原子裸机工程移植的EMWIN例程,不屏蔽while(1){GUI_Delay(10);}这些代码,两个BUTTON按钮均没有显示出来,但是触摸相应位置能正常控制LED。  
屏蔽了while(1){GUI_Delay(10);},两个BUTTON按钮显示就正常了,触摸也正常。请问下这是什么原因?

问题2:我想修改显示按钮的字符信息,按照原子的教程发现通过修改BUTTON_SetText(hItem, "led1");这句话不起作用。只能通过修改{ BUTTON_CreateIndirect, "LED1", ID_BUTTON_1, 140, 40, 80, 80, 0, 0, 0 },才能改变字符相关信息。请问下这是什么原因?

帮忙解答下疑惑, 谢谢。


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2019-1-12 11:10:12 | 显示全部楼层
第1个问题:while(1){GUI_Delay(10);}是操作系统里面用来做任务切换的,而且GUI_Delay()也会绘制界面,裸机的话应该也是需要的,后面要测试。第2个问题:原因我也不知道,EMWIN只提供API函数,调用函数没有反应这个只能问EMWIN官方了
开往春天的手扶拖拉机
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-23 18:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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