中级会员
 
- 积分
- 229
- 金钱
- 229
- 注册时间
- 2017-8-9
- 在线时间
- 83 小时
|
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 },才能改变字符相关信息。请问下这是什么原因?
帮忙解答下疑惑, 谢谢。
|
|