www.pudn.com > uC-GUI-V3-98.zip > NEC_BuildingManagement.c


/* 
********************************************************************************************************* 
*                                                uC/GUI 
*                        Universal graphic software for embedded applications 
* 
*                       (c) Copyright 2002, Micrium Inc., Weston, FL 
*                       (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH 
* 
*              µC/GUI is protected by international copyright laws. Knowledge of the 
*              source code may not be used to write a similar product. This file may 
*              only be used in accordance with a license and should not be redistributed 
*              in any way. We appreciate your understanding and fairness. 
* 
---------------------------------------------------------------------- 
File        : NEC_BuildingManagement.c 
Purpose     : NEC Building Management Demo 
---------------------------END-OF-HEADER------------------------------ 
*/ 
 
#include  
#include  
#include "GUI.h" 
#include "WM.h" 
#include "BUTTON.h" 
#include "EDIT.h" 
#include "TEXT.h" 
#include "SLIDER.h" 
 
/********************************************************************* 
* 
*       Defines 
* 
********************************************************************** 
*/ 
 
#define MSG_SELECTSENSOR    (WM_USER+0) 
#define MSG_SENSORDATA      (WM_USER+1) 
 
#define ID_ENTER            (GUI_ID_USER+0) 
#define ID_ESCAPE           (GUI_ID_USER+1) 
#define ID_BACK             (GUI_ID_USER+2) 
 
/********************************************************************* 
* 
*       Types 
* 
********************************************************************** 
*/ 
 
typedef struct { 
  const char* pName; 
  const char* pUnit; 
  int         ActValue; 
  int         MinValue; 
  int         MaxValue; 
  int         IsAdjustable; 
} SENSOR; 
 
/********************************************************************* 
* 
*       Static data 
* 
********************************************************************** 
*/ 
 
static int      _DateDay    = 11; 
static int      _DateMonth  = 10; 
static int      _DateYear   = 2004; 
static int      _TimeOffset = 39600000; 
 
static char     _acUserName[34]; 
static char     _acPassword[34]; 
 
static int      _ActSensor; 
 
static SENSOR   _Sensor[4] = { 
  { "Temperature A", "°C",   23, 20, 25, 1 }, 
  { "Temperature B", "°C",   25, 20, 25, 1 }, 
  { "Pressure",      "mBar", 21, 20, 25, 0 }, 
  { "Humidity",      "RH",   50, 20, 25, 0 } 
}; 
 
/********************************************************************* 
* 
*       Static code 
* 
********************************************************************** 
*/ 
/********************************************************************* 
* 
*       _CopyCurrentValuesToEdit 
*/ 
static void _CopyCurrentValuesToEdit(WM_HWIN hWin) { 
  char ac[32]; 
  int i; 
  for (i = 0; i < 4; i++) { 
    sprintf(ac, "%d %s", _Sensor[i].ActValue, _Sensor[i].pUnit); 
    EDIT_SetText(WM_GetDialogItem(hWin, GUI_ID_EDIT0 + i), ac); 
  } 
} 
 
/********************************************************************* 
* 
*       _CopyMinMaxToEdit 
*/ 
static void _CopyMinMaxToEdit(WM_HWIN hWin) { 
  char ac[32]; 
  sprintf(ac, "%d %s", _Sensor[_ActSensor].MinValue, _Sensor[_ActSensor].pUnit); 
  EDIT_SetText(WM_GetDialogItem(hWin, GUI_ID_EDIT0), ac); 
  sprintf(ac, "%d %s", _Sensor[_ActSensor].MaxValue, _Sensor[_ActSensor].pUnit); 
  EDIT_SetText(WM_GetDialogItem(hWin, GUI_ID_EDIT1), ac); 
} 
 
/********************************************************************* 
* 
*       Static code, callbacks 
* 
********************************************************************** 
*/ 
/********************************************************************* 
* 
*       _cbDialogSensor 
*/ 
static void _cbDialogSensor(WM_MESSAGE* pMsg) { 
  WM_HWIN hWin, hItem; 
  hWin = pMsg->hWin; 
  switch (pMsg->MsgId) { 
  case WM_CREATE: { 
    WM_SetFocus(hWin); 
    hItem = BUTTON_CreateEx((LCD_GetXSize() >> 1) - 70, LCD_GetYSize() - 42, 140, 36, hWin, WM_CF_SHOW, 0, GUI_ID_OK); 
    BUTTON_SetText(hItem, "Exit To Menu"); 
    TEXT_CreateEx(40, 160 + (0 * 45), 300, 30, hWin, WM_CF_SHOW, 0, GUI_ID_TEXT0, "1.        Minimum setting"); 
    TEXT_CreateEx(40, 160 + (1 * 45), 300, 30, hWin, WM_CF_SHOW, 0, GUI_ID_TEXT1, "2.        Maximum setting"); 
    hItem = EDIT_CreateEx(350, 157 + (0 * 45), 110, 30, hWin, WM_CF_SHOW, 0, GUI_ID_EDIT0, 0); 
    WM_DisableWindow(hItem); 
    hItem = EDIT_CreateEx(350, 157 + (1 * 45), 110, 30, hWin, WM_CF_SHOW, 0, GUI_ID_EDIT1, 0); 
    WM_DisableWindow(hItem); 
    if (_Sensor[_ActSensor].IsAdjustable) { 
      hItem = SLIDER_CreateEx(480, 152 + (0 * 45), 110, 36, hWin, WM_CF_SHOW, 0, GUI_ID_SLIDER0); 
      SLIDER_SetWidth(hItem, 12); 
      SLIDER_SetRange(hItem, 0, 40); 
      SLIDER_SetValue(hItem, _Sensor[_ActSensor].MinValue); 
      hItem = SLIDER_CreateEx(480, 152 + (1 * 45), 110, 36, hWin, WM_CF_SHOW, 0, GUI_ID_SLIDER1); 
      SLIDER_SetWidth(hItem, 12); 
      SLIDER_SetRange(hItem, 0, 40); 
      SLIDER_SetValue(hItem, _Sensor[_ActSensor].MaxValue); 
      _CopyMinMaxToEdit(hWin); 
    } else { 
      EDIT_SetText(WM_GetDialogItem(hWin, GUI_ID_EDIT0), "-----"); 
      EDIT_SetText(WM_GetDialogItem(hWin, GUI_ID_EDIT1), "-----"); 
    } 
    hItem = BUTTON_CreateEx( 80, 275, 230, 42, hWin, WM_CF_SHOW, 0, GUI_ID_BUTTON0); 
    BUTTON_SetText(hItem, "View Trend Graph"); 
    hItem = BUTTON_CreateEx(340, 275, 230, 42, hWin, WM_CF_SHOW, 0, GUI_ID_BUTTON1); 
    BUTTON_SetText(hItem, "View User Log"); 
  } break; 
  case WM_PAINT: 
    { 
      char ac[64]; 
      int Time; 
      Time = GUI_GetTime() + _TimeOffset; 
      GUI_SetBkColor(GUI_BLACK); 
      GUI_Clear(); 
      GUI_SetColor(GUI_WHITE); 
      GUI_SetFont(&GUI_Font32B_ASCII); 
      GUI_DispStringHCenterAt("NEC Building Management Demo", LCD_GetXSize() >> 1, 20); 
      GUI_SetFont(&GUI_Font24B_ASCII); 
      sprintf(ac, "Sensor %d  -  %s", _ActSensor + 1, _Sensor[_ActSensor].pName); 
      GUI_DispStringHCenterAt(ac, LCD_GetXSize() >> 1, 70); 
      GUI_SetFont(&GUI_Font24_ASCII); 
      sprintf(ac, "Date: %.2d/%.2d/%.2d", _DateDay, _DateMonth, _DateYear % 100); 
      GUI_DispStringAt(ac, 10, LCD_GetYSize() - 35); 
      sprintf(ac, "Time: %.2d:%.2d", (Time / 3600000) % 24, (Time / 60000) % 60); 
      GUI_DispStringAt(ac, LCD_GetXSize() - 120, LCD_GetYSize() - 35); 
    } 
    break; 
  case WM_NOTIFY_PARENT: 
    if (pMsg->Data.v == WM_NOTIFICATION_RELEASED) { 
      int Id = WM_GetId(pMsg->hWinSrc); 
      if (Id == GUI_ID_OK) { 
        WM_DeleteWindow(hWin); 
      } else if (Id == GUI_ID_BUTTON0) { 
        /* View Trend Graph */ 
      } else if (Id == GUI_ID_BUTTON1) { 
        /* View User Log */ 
      } 
    } else if (pMsg->Data.v == WM_NOTIFICATION_VALUE_CHANGED) { 
      int Id = WM_GetId(pMsg->hWinSrc); 
      if (Id == GUI_ID_SLIDER0) { 
        hItem = WM_GetDialogItem(hWin, GUI_ID_SLIDER0); 
        _Sensor[_ActSensor].MinValue = SLIDER_GetValue(hItem); 
        if (_Sensor[_ActSensor].MinValue > _Sensor[_ActSensor].MaxValue) { 
          SLIDER_SetValue(hItem, _Sensor[_ActSensor].MaxValue); 
        } 
        _CopyMinMaxToEdit(hWin); 
      } 
      if (Id == GUI_ID_SLIDER1) { 
        hItem = WM_GetDialogItem(hWin, GUI_ID_SLIDER1); 
        _Sensor[_ActSensor].MaxValue = SLIDER_GetValue(hItem); 
        if (_Sensor[_ActSensor].MaxValue < _Sensor[_ActSensor].MinValue) { 
          SLIDER_SetValue(hItem, _Sensor[_ActSensor].MinValue); 
        } 
        _CopyMinMaxToEdit(hWin); 
      } 
    } 
    break; 
  default: 
    WM_DefaultProc(pMsg); 
  } 
} 
 
/********************************************************************* 
* 
*       _cbDialogSelect 
*/ 
static void _cbDialogSelect(WM_MESSAGE* pMsg) { 
  WM_HWIN hWin, hItem; 
  int i; 
  hWin = pMsg->hWin; 
  switch (pMsg->MsgId) { 
  case WM_CREATE: 
    WM_SetFocus(hWin); 
    hItem = BUTTON_CreateEx((LCD_GetXSize() >> 1) - 70, LCD_GetYSize() - 42, 140, 36, hWin, WM_CF_SHOW, 0, GUI_ID_OK); 
    BUTTON_SetText(hItem, "Exit To Menu"); 
    for (i = 0; i < 4; i++) { 
      char ac[64]; 
      sprintf(ac, "%d.        %s", i + 1, _Sensor[i].pName); 
      TEXT_CreateEx(40, 160 + (i * 45), 300, 30, hWin, WM_CF_SHOW, 0, GUI_ID_TEXT0 + i, ac); 
      hItem = EDIT_CreateEx(350, 157 + (i * 45), 110, 30, hWin, WM_CF_SHOW, 0, GUI_ID_EDIT0 + i, 0); 
      WM_DisableWindow(hItem); 
      hItem = BUTTON_CreateEx(480, 156 + (i * 45), 110, 32, hWin, WM_CF_SHOW, 0, GUI_ID_BUTTON0 + i); 
      BUTTON_SetText(hItem, "Select"); 
    } 
    /* Fill edit controls */ 
    _CopyCurrentValuesToEdit(hWin); 
    break; 
  case WM_PAINT: 
    { 
      char ac[32]; 
      int Time; 
      Time = GUI_GetTime() + _TimeOffset; 
      GUI_SetBkColor(GUI_BLACK); 
      GUI_Clear(); 
      GUI_SetColor(GUI_WHITE); 
      GUI_SetFont(&GUI_Font32B_ASCII); 
      GUI_DispStringHCenterAt("NEC Building Management Demo", LCD_GetXSize() >> 1, 20); 
      GUI_SetFont(&GUI_Font24B_ASCII); 
      GUI_DispStringHCenterAt("Sensor Selection", LCD_GetXSize() >> 1, 70); 
      GUI_SetFont(&GUI_Font24_ASCII); 
      sprintf(ac, "Date: %.2d/%.2d/%.2d", _DateDay, _DateMonth, _DateYear % 100); 
      GUI_DispStringAt(ac, 10, LCD_GetYSize() - 35); 
      sprintf(ac, "Time: %.2d:%.2d", (Time / 3600000) % 24, (Time / 60000) % 60); 
      GUI_DispStringAt(ac, LCD_GetXSize() - 120, LCD_GetYSize() - 35); 
    } 
    break; 
  case WM_NOTIFY_PARENT: 
    if (pMsg->Data.v == WM_NOTIFICATION_RELEASED) { 
      int Id = WM_GetId(pMsg->hWinSrc); 
      if (Id == GUI_ID_OK) { 
        WM_DeleteWindow(hWin); 
        _acUserName[0] = 0; 
        _acPassword[0] = 0; 
      } else if ((Id >= GUI_ID_BUTTON0) && (Id <= GUI_ID_BUTTON3)) { 
        _ActSensor = Id - GUI_ID_BUTTON0; 
        hItem = WM_CreateWindowAsChild(0, 0, LCD_GetXSize(), LCD_GetYSize(), hWin, WM_CF_SHOW, &_cbDialogSensor, 0); 
        WM_MakeModal(hItem); 
      } 
    } 
    break; 
  default: 
    WM_DefaultProc(pMsg); 
  } 
} 
 
/********************************************************************* 
* 
*       _CreateButton 
*/ 
static void _CreateButton(WM_HWIN hWin, int x, int y, int w, int h, int Id, const char* pText) { 
  WM_HWIN hItem; 
  hItem = BUTTON_CreateEx(x, y, w, h, hWin, WM_CF_SHOW, 0, Id + GUI_ID_USER); 
  BUTTON_SetFocussable(hItem, 0); 
  if (pText) { 
    BUTTON_SetText(hItem, pText); 
  } 
  if (Id == 0) { 
    WM_DisableWindow(hItem); 
  } 
} 
 
/********************************************************************* 
* 
*       _cbKeyWin 
*/ 
static void _cbKeyWin(WM_MESSAGE* pMsg) { 
  switch (pMsg->MsgId) { 
  case WM_CREATE: 
    WM_SetFocus(pMsg->hWin); 
    break; 
  case WM_PAINT: 
    (*WIDGET_Effect_3D2L.pfDrawUp)(); 
    break; 
  default: 
    WM_DefaultProc(pMsg); 
  } 
} 
 
/********************************************************************* 
* 
*       _CreateKeyboard 
*/ 
static void _CreateKeyboard(WM_HWIN hParent) { 
  WM_HWIN hWin; 
  int b; 
  b = WIDGET_Effect_3D2L.EffectSize; 
  hWin = WM_CreateWindowAsChild(145 - b, 258 - b, 349 + 2*b, 146 + 2*b, hParent, WM_CF_SHOW, &_cbKeyWin, 0); 
  /* Create buttons for line 1 */ 
  _CreateButton(hWin, b +   0, b +   0,  30, 30, GUI_ID_USER + '1', "1"); 
  _CreateButton(hWin, b +  29, b +   0,  30, 30, GUI_ID_USER + '2', "2"); 
  _CreateButton(hWin, b +  58, b +   0,  30, 30, GUI_ID_USER + '3', "3"); 
  _CreateButton(hWin, b +  87, b +   0,  30, 30, GUI_ID_USER + '4', "4"); 
  _CreateButton(hWin, b + 116, b +   0,  30, 30, GUI_ID_USER + '5', "5"); 
  _CreateButton(hWin, b + 145, b +   0,  30, 30, GUI_ID_USER + '6', "6"); 
  _CreateButton(hWin, b + 174, b +   0,  30, 30, GUI_ID_USER + '7', "7"); 
  _CreateButton(hWin, b + 203, b +   0,  30, 30, GUI_ID_USER + '8', "8"); 
  _CreateButton(hWin, b + 232, b +   0,  30, 30, GUI_ID_USER + '9', "9"); 
  _CreateButton(hWin, b + 261, b +   0,  30, 30, GUI_ID_USER + '0', "0"); 
  _CreateButton(hWin, b + 290, b +   0,  59, 30, ID_BACK, "<<"); 
  /* Create buttons for line 2 */ 
  _CreateButton(hWin, b +   0, b +  29,  16, 30, 0, 0); 
  _CreateButton(hWin, b +  15, b +  29,  30, 30, GUI_ID_USER + 'Q', "Q"); 
  _CreateButton(hWin, b +  44, b +  29,  30, 30, GUI_ID_USER + 'W', "W"); 
  _CreateButton(hWin, b +  73, b +  29,  30, 30, GUI_ID_USER + 'E', "E"); 
  _CreateButton(hWin, b + 102, b +  29,  30, 30, GUI_ID_USER + 'R', "R"); 
  _CreateButton(hWin, b + 131, b +  29,  30, 30, GUI_ID_USER + 'T', "T"); 
  _CreateButton(hWin, b + 160, b +  29,  30, 30, GUI_ID_USER + 'Y', "Y"); 
  _CreateButton(hWin, b + 189, b +  29,  30, 30, GUI_ID_USER + 'U', "U"); 
  _CreateButton(hWin, b + 218, b +  29,  30, 30, GUI_ID_USER + 'I', "I"); 
  _CreateButton(hWin, b + 247, b +  29,  30, 30, GUI_ID_USER + 'O', "O"); 
  _CreateButton(hWin, b + 276, b +  29,  30, 30, GUI_ID_USER + 'P', "P"); 
  _CreateButton(hWin, b + 305, b +  29,  30, 30, GUI_ID_USER + 'Ü', "Ü"); 
  _CreateButton(hWin, b + 334, b +  29,  15, 30, 0, 0); 
  /* Create buttons for line 3 */ 
  _CreateButton(hWin, b +   0, b +  58,  30, 30, 0, 0); 
  _CreateButton(hWin, b +  29, b +  58,  30, 30, GUI_ID_USER + 'A', "A"); 
  _CreateButton(hWin, b +  58, b +  58,  30, 30, GUI_ID_USER + 'S', "S"); 
  _CreateButton(hWin, b +  87, b +  58,  30, 30, GUI_ID_USER + 'D', "D"); 
  _CreateButton(hWin, b + 116, b +  58,  30, 30, GUI_ID_USER + 'F', "F"); 
  _CreateButton(hWin, b + 145, b +  58,  30, 30, GUI_ID_USER + 'G', "G"); 
  _CreateButton(hWin, b + 174, b +  58,  30, 30, GUI_ID_USER + 'H', "H"); 
  _CreateButton(hWin, b + 203, b +  58,  30, 30, GUI_ID_USER + 'J', "J"); 
  _CreateButton(hWin, b + 232, b +  58,  30, 30, GUI_ID_USER + 'K', "K"); 
  _CreateButton(hWin, b + 261, b +  58,  30, 30, GUI_ID_USER + 'L', "L"); 
  _CreateButton(hWin, b + 290, b +  58,  30, 30, GUI_ID_USER + 'Ö', "Ö"); 
  _CreateButton(hWin, b + 319, b +  58,  30, 30, GUI_ID_USER + 'Ä', "Ä"); 
  /* Create buttons for line 4 */ 
  _CreateButton(hWin, b +   0, b +  87,  45, 30, 0, 0); 
  _CreateButton(hWin, b +  44, b +  87,  30, 30, GUI_ID_USER + 'Z', "Z"); 
  _CreateButton(hWin, b +  73, b +  87,  30, 30, GUI_ID_USER + 'X', "X"); 
  _CreateButton(hWin, b + 102, b +  87,  30, 30, GUI_ID_USER + 'C', "C"); 
  _CreateButton(hWin, b + 131, b +  87,  30, 30, GUI_ID_USER + 'V', "V"); 
  _CreateButton(hWin, b + 160, b +  87,  30, 30, GUI_ID_USER + 'B', "B"); 
  _CreateButton(hWin, b + 189, b +  87,  30, 30, GUI_ID_USER + 'N', "N"); 
  _CreateButton(hWin, b + 218, b +  87,  30, 30, GUI_ID_USER + 'M', "M"); 
  _CreateButton(hWin, b + 247, b +  87,  30, 30, GUI_ID_USER + '@', "@"); 
  _CreateButton(hWin, b + 276, b +  87,  30, 30, GUI_ID_USER + '.', "."); 
  _CreateButton(hWin, b + 305, b +  87,  44, 30, 0, 0); 
  /* Create buttons for line 5 */ 
  _CreateButton(hWin, b +   0, b + 116,  69, 30, ID_ESCAPE, "Esc"); 
  _CreateButton(hWin, b +  68, b + 116, 214, 30, GUI_ID_USER + ' ', " "); 
  _CreateButton(hWin, b + 281, b + 116,  68, 30, ID_ENTER, "Enter"); 
} 
 
/********************************************************************* 
* 
*       _cbDialogMain 
*/ 
static void _cbDialogMain(WM_MESSAGE* pMsg) { 
  WM_HWIN hWin, hItem; 
  hWin = pMsg->hWin; 
  switch (pMsg->MsgId) { 
  case WM_CREATE: 
    WM_SetFocus(hWin); 
    hItem = BUTTON_CreateEx((LCD_GetXSize() >> 1) - 70, LCD_GetYSize() - 42, 140, 36, hWin, WM_CF_SHOW, 0, GUI_ID_OK); 
    BUTTON_SetText(hItem, "Enter"); 
    TEXT_CreateEx(40, 160 + (0 * 45), 300, 30, hWin, WM_CF_SHOW, 0, GUI_ID_TEXT0, "Enter Name:"); 
    TEXT_CreateEx(40, 160 + (1 * 45), 300, 30, hWin, WM_CF_SHOW, 0, GUI_ID_TEXT1, "Password Name:"); 
    hItem = EDIT_CreateEx(230, 157 + (0 * 45), 220, 30, hWin, WM_CF_SHOW, 0, GUI_ID_EDIT0, 32); 
    EDIT_SetTextAlign(hItem, GUI_TA_LEFT | GUI_TA_VCENTER); 
    EDIT_SetFont(hItem, &GUI_Font16B_ASCII); 
    WM_DisableWindow(hItem); 
    hItem = EDIT_CreateEx(230, 157 + (1 * 45), 220, 30, hWin, WM_CF_SHOW, 0, GUI_ID_EDIT1, 32); 
    EDIT_SetTextAlign(hItem, GUI_TA_LEFT | GUI_TA_VCENTER); 
    EDIT_SetFont(hItem, &GUI_Font16B_ASCII); 
    WM_DisableWindow(hItem); 
    _CreateKeyboard(pMsg->hWin); 
    break; 
  case WM_PAINT: 
    { 
      char ac[32]; 
      int Time; 
      Time = GUI_GetTime() + _TimeOffset; 
      GUI_SetBkColor(GUI_BLACK); 
      GUI_Clear(); 
      GUI_SetColor(GUI_WHITE); 
      GUI_SetFont(&GUI_Font32B_ASCII); 
      GUI_DispStringHCenterAt("NEC Building Management Demo", LCD_GetXSize() >> 1, 20); 
      GUI_SetFont(&GUI_Font24B_ASCII); 
      GUI_DispStringHCenterAt("Touchscreen Menu Control", LCD_GetXSize() >> 1, 70); 
      GUI_SetFont(&GUI_Font24_ASCII); 
      sprintf(ac, "Date: %.2d/%.2d/%.2d", _DateDay, _DateMonth, _DateYear % 100); 
      GUI_DispStringAt(ac, 10, LCD_GetYSize() - 35); 
      sprintf(ac, "Time: %.2d:%.2d", (Time / 3600000) % 24, (Time / 60000) % 60); 
      GUI_DispStringAt(ac, LCD_GetXSize() - 120, LCD_GetYSize() - 35); 
    } 
    break; 
  case WM_TOUCH_CHILD: 
    { 
      WM_MESSAGE* pMsg; 
    } 
    break; 
  case WM_NOTIFY_PARENT: 
    if (pMsg->Data.v == WM_NOTIFICATION_RELEASED) { 
      int Id = WM_GetId(pMsg->hWinSrc); 
      if (Id == GUI_ID_OK) { 
        hItem = WM_CreateWindowAsChild(0, 0, LCD_GetXSize(), LCD_GetYSize(), hWin, WM_CF_SHOW, &_cbDialogSelect, 0); 
        WM_MakeModal(hItem); 
      } 
    } else if (pMsg->Data.v == WM_NOTIFICATION_CHILD_DELETED) { 
      EDIT_SetText(WM_GetDialogItem(hWin, GUI_ID_EDIT0), _acUserName); 
      EDIT_SetText(WM_GetDialogItem(hWin, GUI_ID_EDIT1), _acPassword); 
    } 
    break; 
  default: 
    WM_DefaultProc(pMsg); 
  } 
} 
 
/********************************************************************* 
* 
*       Public code 
* 
********************************************************************** 
*/ 
/********************************************************************* 
* 
*       MainTask 
*/ 
void MainTask(void); 
void MainTask(void) { 
  GUI_Init(); 
  //WM_SetCreateFlags(WM_CF_MEMDEV); 
  BUTTON_SetDefaultFont(&GUI_Font16B_1); 
  EDIT_SetDefaultFont(&GUI_Font24B_1); 
  TEXT_SetDefaultFont(&GUI_Font24B_ASCII); 
  TEXT_SetDefaultTextColor(0xB0FFB0); 
  EDIT_SetDefaultTextAlign(GUI_TA_HCENTER | GUI_TA_VCENTER); 
  WM_CreateWindowAsChild(0, 0, LCD_GetXSize(), LCD_GetYSize(), WM_HBKWIN, WM_CF_SHOW, &_cbDialogMain, 0); 
  while (1) { 
    WM_HWIN hWin; 
    hWin = WM_Screen2hWin(LCD_GetXSize() - 1, LCD_GetYSize() - 1); 
    WM_InvalidateWindow(hWin); 
    GUI_Delay(3000); 
  } 
} 
 
/*************************** End of file ****************************/