www.pudn.com > uC-GUI-V3-98.zip > MainTask.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. 
*              distributed in any way. We appreciate your understanding and fairness. 
---------------------------------------------------------------------- 
File        : MainTask.c 
Purpose     : Main program, called from after main after initialisation 
---------------------------END-OF-HEADER------------------------------ 
*/ 
 
#include  
#include "GUI.h" 
#include "DIALOG.h" 
#include "Main.h" 
 
/********************************************************************* 
* 
*       Defines 
* 
********************************************************************** 
*/ 
/********************************************************************* 
* 
*       Dialog IDs 
*/ 
#define ID_BUTTON_SETUP          1 
#define ID_BUTTON_CALIBRATION    2 
#define ID_BUTTON_ABOUT          3 
 
/********************************************************************* 
* 
*       Static data 
* 
********************************************************************** 
*/ 
/********************************************************************* 
* 
*       Dialog resource 
* 
* This table conatins the info required to create the dialog. 
* It has been created manually, but could also be created by a GUI-builder. 
*/ 
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = { 
  { FRAMEWIN_CreateIndirect, "Main Screen", 0,                       0,   0, 320, 240, 0}, 
  { BUTTON_CreateIndirect,   "Setup",       ID_BUTTON_SETUP,       230,  80,  60,  20 }, 
  { BUTTON_CreateIndirect,   "Calibration", ID_BUTTON_CALIBRATION, 230, 110,  60,  20 }, 
  { BUTTON_CreateIndirect,   "About",       ID_BUTTON_ABOUT,       230, 140,  60,  20 }, 
}; 
 
/********************************************************************* 
* 
*       Static code 
* 
********************************************************************** 
*/ 
/********************************************************************* 
* 
*       _cbCallback 
*/ 
static void _cbCallback(WM_MESSAGE * pMsg) { 
  WM_HWIN hDlg; 
  WM_HWIN hWinSrc; 
  int Id; 
  int NCode; 
 
  hWinSrc = pMsg->hWinSrc; 
  hDlg = pMsg->hWin; 
  switch (pMsg->MsgId) { 
  case WM_PAINT: 
    GUI_SetColor(GUI_BLACK); 
    GUI_DrawBitmap(&bmMicriumLogo, 30, 80); 
    GUI_SetFont(&GUI_Font24B_ASCII); 
    GUI_SetFont(&GUI_Font16B_ASCII); 
    GUI_DispStringHCenterAt("www.Micrium.com", 30 + bmMicriumLogo.XSize / 2, 80 + bmMicriumLogo.YSize); 
    GUI_DispStringHCenterAt("Virtual screen sample", 160, 20); 
    break; 
  case WM_INIT_DIALOG: 
    FRAMEWIN_SetFont(hDlg, &GUI_Font24B_ASCII); 
    FRAMEWIN_SetTextAlign(hDlg, GUI_TA_HCENTER); 
    break; 
  case WM_NOTIFY_PARENT: 
    Id    = WM_GetId(hWinSrc);      /* Id of widget */ 
    NCode = pMsg->Data.v;           /* Notification code */ 
    switch (NCode) { 
    case WM_NOTIFICATION_RELEASED: 
      switch (Id) { 
      case ID_BUTTON_SETUP: 
        ExecSetup(); 
        break; 
      case ID_BUTTON_CALIBRATION: 
        ExecCalibration(); 
        break; 
      case ID_BUTTON_ABOUT: 
        ExecAbout(); 
        break; 
      } 
      break; 
    } 
    break; 
  default: 
    WM_DefaultProc(pMsg); 
  } 
} 
 
/********************************************************************* 
* 
*       Public code 
* 
********************************************************************** 
*/ 
/********************************************************************* 
* 
*       MainTask 
* 
********************************************************************** 
*/ 
void MainTask(void); 
void MainTask(void) { 
  int XSize, YSize; 
  #if GUI_SUPPORT_MEMDEV 
    WM_SetCreateFlags(WM_CF_MEMDEV); 
  #endif 
  GUI_Init(); 
  XSize = LCD_GetXSize(); 
  YSize = LCD_GetYSize(); 
  GUI_DrawBitmap(&bmMicriumLogo, (XSize - bmMicriumLogo.XSize) / 2, (YSize - bmMicriumLogo.YSize) / 3); 
  GUI_SetFont(&GUI_Font24B_ASCII); 
  GUI_DispStringHCenterAt("www.Micrium.com", XSize / 2, (YSize - bmMicriumLogo.YSize) / 3 + bmMicriumLogo.YSize + 10); 
  GUI_Delay(1000); 
  WM_SetDesktopColor(GUI_BLACK); /* Not required since desktop is not visible */ 
  GUI_ExecDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0); 
}