[C] 纯文本查看 复制代码
/*********************************************************************
* *
* SEGGER Microcontroller GmbH & Co. KG *
* Solutions for real time microcontroller applications *
* *
**********************************************************************
* *
* C-file generated by: *
* *
* GUI_Builder for emWin version 5.44 *
* Compiled Nov 10 2017, 08:53:57 *
* (c) 2017 Segger Microcontroller GmbH & Co. KG *
* *
**********************************************************************
* *
* Internet: [url]www.segger.com[/url] Support: [email]support@segger.com[/email] *
* *
**********************************************************************
*/
// USER START (Optionally insert additional includes)
#include "stdio.h"
#include "main.h"
// USER END
#include "DIALOG.h"
/*********************************************************************
*
* Defines
*
**********************************************************************
*/
#define ID_WINDOW_0 (GUI_ID_USER + 0x00)
#define ID_TEXT_0 (GUI_ID_USER + 0x01)
// USER START (Optionally insert additional defines)
extern GUI_CONST_STORAGE GUI_FONT GUI_FontKaiTi16;
extern GUI_CONST_STORAGE GUI_FONT GUI_FontKaiTi24;
extern GUI_CONST_STORAGE GUI_FONT GUI_FontKaiTi33;
#define ID_SYSDESKTOP_TIMER_TIME (GUI_ID_USER + 0x9A)
//#define ID_TIMER_TIME 1
extern WM_HWIN pWin;
extern WM_HWIN CurrenthWin;
extern WM_HWIN CreatePowerOff(void);
// USER END
/*********************************************************************
*
* Static data
*
**********************************************************************
*/
// USER START (Optionally insert additional static data)
// USER END
/*********************************************************************
*
* _aDialogCreate
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
{ WINDOW_CreateIndirect, "SysDesktop", ID_WINDOW_0, 0, 12, 128, 52, 0, 0x0, 0 },
{ TEXT_CreateIndirect, "", ID_TEXT_0, 0, 0, 128, 52, 0, 0x64, 0 },
// USER START (Optionally insert additional widgets)
// USER END
};
/*********************************************************************
*
* Static code
*
**********************************************************************
*/
// USER START (Optionally insert additional static code)
// USER END
/*********************************************************************
*
* _cbDialog
*/
static void _cbDialog(WM_MESSAGE * pMsg) {
WM_HWIN hItem;
// USER START (Optionally insert additional variables)
// USER END
switch (pMsg->MsgId) {
case WM_INIT_DIALOG:
//
// Initialization of ''
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0);
TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER);
TEXT_SetText(hItem, "X");
// USER START (Optionally insert additional code for further widget initialization)
hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0);
TEXT_SetFont(hItem, &GUI_FontKaiTi24);
TEXT_SetText(hItem, "T");
WM_SetFocus(pMsg->hWin);
// USER END
break;
// USER START (Optionally insert additional message handling)
case GUI_KEY_POWERONOFF:
CreatePowerOff();
break;
break;
// USER END
default:
WM_DefaultProc(pMsg);
break;
}
}
/*********************************************************************
*
* Public code
*
**********************************************************************
*/
/*********************************************************************
*
* CreateSysDesktop
*/
WM_HWIN CreateSysDesktop(void);
WM_HWIN CreateSysDesktop(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)
/*******************************************************************
*
* Callback routine for foreground window
*
********************************************************************
*/
static void cbForegroundWin(WM_MESSAGE* pMsg) {
switch (pMsg->MsgId) {
case WM_PAINT:
GUI_SetBkColor(GUI_BLACK);
GUI_Clear();
//GUI_DispString("Foreground window");
break;
default:
WM_DefaultProc(pMsg);
}
}
/*******************************************************************
*
* Callback routine for background window
*
********************************************************************
*/
static void _cbBackGround(WM_MESSAGE* pMsg) { //桌面背景的回调函数
int xSize, ySize;
static uint8_t TempStr[50];
uint16_t usage =0;
RTC_TimeTypeDef RTC_TimeStructure;
RTC_DateTypeDef RTC_DateStructure;
uint8_t sec, min, hour;
uint8_t day, month, year;
static WM_HTIMER hTimerTime;
WM_HWIN hWin,cWin;
hWin = pMsg->hWin;
switch (pMsg->MsgId) {
case WM_CREATE:
hTimerTime = WM_CreateTimer(hWin, ID_SYSDESKTOP_TIMER_TIME/*ID_TIMER_TIME*/, 1000, 0);
break;
// case WM_DELETE:
// WM_DeleteTimer(hTimerTime);
// break;
case WM_TIMER:
WM_InvalidateWindow(hWin);
WM_RestartTimer(pMsg->Data.v, 1000);
break;
case WM_PAINT:
xSize = WM_GetWindowSizeX(hWin);
ySize = WM_GetWindowSizeY(hWin);
/* Draw background */
GUI_SetColor(GUI_WHITE);
GUI_FillRect(0, 0, xSize , ySize - 3);
GUI_SetColor(GUI_BLACK);
GUI_DrawHLine(ySize - 2, 0, xSize );
GUI_SetColor(GUI_WHITE);
GUI_DrawHLine(ySize - 1, 0, xSize );
/* Draw time & Date */
GUI_SetTextMode(GUI_TM_TRANS);
GUI_SetColor(GUI_BLACK);
GUI_SetFont(GUI_FONT_8_ASCII);
sprintf((char *)TempStr, "%02d\/%02d\/%02d %02d:%02d",
DateTime.Date.Year, DateTime.Date.Month, DateTime.Date.Date,
DateTime.Time.Hours , DateTime.Time.Minutes/*, DateTime.Time.Seconds*/);
break;
default:
WM_DefaultProc(pMsg);
}
}
WM_HWIN CreateSysDesktop1(void);
WM_HWIN CreateSysDesktop1(void) {
WM_HWIN hWin;
WM_SetCreateFlags(WM_CF_MEMDEV);
GUI_EnableAlpha(1);
WM_MULTIBUF_Enable(1);
WM_SetDesktopColor(GUI_BLACK);
WM_EnableMemdev(WM_GetDesktopWindow());
GUI_UC_SetEncodeUTF8();
WM_CreateWindowAsChild(0,
0,
LCD_GetXSize(),
12,
//WM_HBKWIN,
WM_GetDesktopWindow(),
WM_CF_SHOW /*| WM_CF_HASTRANS */,
_cbBackGround,
0);
hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
return hWin;
}
// USER END
/*************************** End of file ****************************/