emwin设计三层可切换页面并且主页面显示时间代码
时间: 2024-02-01 08:03:57 浏览: 128
ZYNQ7100实现驱动OV5640摄像头RGB LCD显示图像【FPGA Vivado实现】
EMWin 是一个图形化界面设计软件,可以用于 STM32 等嵌入式系统的 UI 开发。在 EMWin 中设计三层可切换页面并且主页面显示时间的代码如下:
```c
#include "GUI.h"
#include "DIALOG.h"
#include "rtc.h"
static WM_HWIN hWin0, hWin1, hWin2; // 三个窗口句柄
static void _cbWin0(WM_MESSAGE * pMsg) {
switch (pMsg->MsgId) {
case WM_PAINT: {
GUI_Clear();
GUI_SetFont(&GUI_Font24B_ASCII);
GUI_DispStringAt("Page 0", 40, 40);
break;
}
default:
WM_DefaultProc(pMsg);
break;
}
}
static void _cbWin1(WM_MESSAGE * pMsg) {
switch (pMsg->MsgId) {
case WM_PAINT: {
GUI_Clear();
GUI_SetFont(&GUI_Font24B_ASCII);
GUI_DispStringAt("Page 1", 40, 40);
break;
}
default:
WM_DefaultProc(pMsg);
break;
}
}
static void _cbWin2(WM_MESSAGE * pMsg) {
switch (pMsg->MsgId) {
case WM_PAINT: {
GUI_Clear();
GUI_SetFont(&GUI_Font24B_ASCII);
GUI_DispStringAt("Page 2", 40, 40);
break;
}
default:
WM_DefaultProc(pMsg);
break;
}
}
void MainTask(void) {
GUI_Init();
hWin0 = WM_CreateWindow(0, 0, 240, 240, WM_CF_SHOW, _cbWin0, 0);
hWin1 = WM_CreateWindow(0, 0, 240, 240, WM_CF_HIDE, _cbWin1, 0);
hWin2 = WM_CreateWindow(0, 0, 240, 240, WM_CF_HIDE, _cbWin2, 0);
while (1) {
RTC_TimeTypeDef RTC_TimeStruct;
RTC_DateTypeDef RTC_DateStruct;
RTC_GetTime(&RTC_TimeStruct);
RTC_GetDate(&RTC_DateStruct);
char time_str[20];
sprintf(time_str, "%02d:%02d:%02d", RTC_TimeStruct.RTC_Hours, RTC_TimeStruct.RTC_Minutes, RTC_TimeStruct.RTC_Seconds);
GUI_Clear();
GUI_SetFont(&GUI_Font24B_ASCII);
GUI_DispStringAt(time_str, 150, 0);
GUI_Exec();
GUI_Delay(100);
}
}
```
这段代码实现了三层可切换页面,并且在主页面显示当前时间。三个窗口分别是 hWin0、hWin1 和 hWin2,使用 `WM_CreateWindow` 函数创建,分别对应三个回调函数 `_cbWin0`、`_cbWin1` 和 `_cbWin2`。在主循环中获取当前时间,使用 `GUI_DispStringAt` 函数在屏幕上显示时间。可以使用按键等事件来切换窗口的显示。
阅读全文