⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 guidemo.c

📁 在纯DOS下运行的TurboC3_ucos2_ucgui bug改进版本
💻 C
字号:
/***********************************************************************************************************                                                uC/GUI*                        Universal graphic software for embedded applications**                       (c) Copyright 2002, Micrium Inc., Weston, FL*                       (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH**              礐/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        : GUIDEMO.cPurpose     : Several GUIDEMO routines----------------------------------------------------------------------*/#include <stddef.h>#include "GUI.h"#include "Progbar.h"#include "LISTBOX.h"#include "FrameWin.h"#include "BUTTON.H"#include "GUIDEMO.H"/***********************************************************************       Static variables************************************************************************/#if GUI_WINSUPPORT  //static BUTTON_Handle   _ahButton[2];  static FRAMEWIN_Handle _ahFrameWin[2];  //static FRAMEWIN_Handle _ahInfoWin[2];  static int             _FrameWinPosX[2],  _FrameWinPosY[2];  static int             _FrameWinSizeX[2], _FrameWinSizeY[2];  //static int             _ButtonSizeX,      _ButtonSizeY;#endifstatic int         _iTest, _iTestMinor;static char        _CmdNext;static const char* _sInfo;static const char* _sExplain;#define countof(Obj) (sizeof(Obj)/sizeof(Obj[0]))/***********************************************************************       Routine table***********************************************************************  The routines to be called are listed here. The advantage to calling  directly is that we can execute some code before and after.*/typedef void fVoidVoid(void);static fVoidVoid * _apfTest[] = {  //GUIDEMO_HardwareInfo,  //GUIDEMO_Speed,  //#if GUI_SUPPORT_MEMDEV  //  GUIDEMO_Graph,  //#endif  //GUIDEMO_Bitmap,  //GUIDEMO_ShowInternationalFonts,  //GUIDEMO_Dialog,  GUIDEMO_ShowColorBar,  //GUIDEMO_ShowColorList,  //GUIDEMO_DemoLUT,  //GUIDEMO_DemoPolygon,  //GUIDEMO_Circle,  //GUIDEMO_ShowMemoryDevice,  //GUIDEMO_Automotive,  //GUIDEMO_Navigation,  //#if GUI_WINSUPPORT    //GUIDEMO_DemoProgBar,    //GUIDEMO_DemoFrameWin,    //#if GUI_SUPPORT_TOUCH    //  GUIDEMO_Touch,    //#endif  //#endif    0};/***********************************************************************       Static routines************************************************************************/static void _UpdateCmdWin(void) {  #if GUI_WINSUPPORT && GUIDEMO_LARGE    // Update info in command window     WM_HWIN hWin;    GUI_CONTEXT ContextOld;    GUI_SaveContext(&ContextOld);    hWin = WM_SelectWindow(_ahInfoWin[1]);    GUI_SetDefault();    GUI_SetBkColor(GUI_GRAY);    GUI_Clear();    GUI_DispStringAt("Demo ", 0, 0);    GUI_DispDecMin(_iTest + 1);    GUI_DispString(".");    GUI_DispDecMin(_iTestMinor);    GUI_DispString("/");    GUI_DispDecMin(countof(_apfTest));    WM_SelectWindow(hWin);    GUI_RestoreContext(&ContextOld);  #endif}static void _UpdateInfoWin(void) {  #if GUI_WINSUPPORT && GUIDEMO_LARGE    GUI_RECT rClient;    WM_HWIN hWin;    GUI_CONTEXT ContextOld;    GUI_SaveContext(&ContextOld);    // Update info  window    WM_ShowWindow(_ahInfoWin[0]);    WM_ShowWindow(_ahFrameWin[0]);    hWin = WM_SelectWindow(_ahInfoWin[0]);    GUI_GetClientRect(&rClient);    GUI_SetBkColor(GUI_WHITE);    GUI_Clear();    GUI_SetColor(GUI_BLACK);    GUI_SetFont(&GUI_Font16B_1);    GUI_SetTextAlign(GUI_TA_HCENTER);    GUI_DispStringHCenterAt(_sInfo, (rClient.x1 - rClient.x0) / 2, 0);    GUI_SetTextAlign(GUI_TA_LEFT);    GUI_SetFont(&GUI_Font8_ASCII);    GUI_DispStringAt(_sExplain, 0, 20);    WM_SelectWindow(hWin);    GUI_RestoreContext(&ContextOld);  #endif}/***********************************************************************       Exported routines************************************************************************/int GUIDEMO_Delay(int t) {  int r = 0;  #if GUI_WINSUPPORT    //int tRem, tEnd = GUI_GetTime() + t;    //PROGBAR_Handle hProg;    //WM_SetForegroundWindow(_ahButton[0]);    //hProg = (t >100) ? PROGBAR_Create(_FrameWinPosX[1]  + 10,    //                                  _FrameWinPosY[1]  + 25,    //                                  _FrameWinSizeX[1] - 20,    //                                  7,    //                                  WM_CF_SHOW|WM_CF_STAYONTOP) : 0;    //#if GUI_SUPPORT_MEMDEV    //  PROGBAR_EnableMemdev(hProg);      //#endif    //PROGBAR_SetMinMax(hProg, 0, t);    //for (; tRem = tEnd - GUI_GetTime(), (tRem > 0) && !GUIDEMO_CheckCancel();) {    //  PROGBAR_SetValue(hProg, t - tRem);    //  WM_ExecIdle();    //  GUI_Delay(10);    //}    //PROGBAR_Delete(hProg);    _UpdateCmdWin();    WM_ExecIdle();  #else    GUI_Delay(t);  #endif  return r;}void GUIDEMO_Wait(void) {  GUIDEMO_Delay(4000);  GUIDEMO_NotifyStartNext();}/*int GUIDEMO_CheckCancel(void) {  int c = GUI_GetKey();  #if GUI_WINSUPPORT    WM_ExecIdle();  #endif  if ((c == 'n') || (c=='N'))    _CmdNext =1;  if ((c == 's') || (c=='S')) {    GUI_Delay(500);    do {      GUI_Delay(10);      #if GUI_WINSUPPORT        WM_ExecIdle();      #endif      c = GUI_GetKey();    } while (!c);  }  return _CmdNext;}*//*void GUIDEMO_ShowInfo(const char* s) {  _sExplain = s;  _UpdateInfoWin();}*//*void GUIDEMO_HideInfoWin(void) {  #if GUI_WINSUPPORT    WM_HideWindow(_ahFrameWin[0]);  #endif}void GUIDEMO_NotifyStartNext(void) {  _CmdNext = 0;  _UpdateCmdWin();  _iTestMinor++;}*//*int GUIDEMO_WaitKey(void) {  int r = 0;  int tMax = GUI_GetTime() + 4000;  int tDiff;   #if GUI_WINSUPPORT    PROGBAR_Handle hProg = PROGBAR_Create(LCD_GetXSize() - 70,                                           LCD_GetYSize() - 40,                                           80, 5, WM_CF_SHOW);  #endif  while (tDiff = tMax-GUI_GetTime(), (tDiff > 0) && !GUIDEMO_CheckCancel()) {    if ((r = GUI_GetKey()) != 0)      break;  }  #if GUI_WINSUPPORT    PROGBAR_Delete(hProg);    WM_ExecIdle();  #endif  return r;}*/void GUIDEMO_ShowIntro(const char * s, const char * sExp) {  GUI_CONTEXT ContextOld;  GUI_SaveContext(&ContextOld);  _sInfo = s;  _sExplain = sExp;  GUI_SetDefault();  GUIDEMO_HideInfoWin();  GUI_SetBkColor(GUI_BLUE);  GUI_SetColor(GUI_WHITE);  GUI_Clear();  GUI_SetFont(&GUI_FontComic18B_ASCII);  GUI_DispStringHCenterAt(s, LCD_GET_XSIZE() / 2, LCD_GET_YSIZE() / 3 - 10);  if (_sExplain) {    GUI_SetFont(&GUI_Font8_ASCII);    GUI_DispStringHCenterAt(_sExplain, LCD_GET_XSIZE() / 2, LCD_GET_YSIZE() / 2 - 10);  }  GUIDEMO_Delay(_sExplain ? 2000 : 4000);#if GUI_WINSUPPORT  _UpdateInfoWin();  _UpdateCmdWin();#endif  GUI_RestoreContext(&ContextOld);  #if GUI_WINSUPPORT    WM_ExecIdle();  #endif  GUIDEMO_NotifyStartNext();  GUI_SetBkColor(GUI_RED);  GUI_Clear();}/***********************************************************************       GUIDEMO_main(): Complete Demo************************************************************************/#if GUIDEMO_LARGEvoid GUIDEMO_main(void) {  #if GUI_WINSUPPORT    int i;  #endif  GUI_Clear();  #if GUI_WINSUPPORT    WM_SetCreateFlags(WM_CF_MEMDEV);  // Automatically use memory devices on all windows    // Calculate position and size of FrameWin[1]     _FrameWinSizeX[1] = 120;    _FrameWinSizeY[1] = 70;    _FrameWinPosX[1] = LCD_GetXSize() - _FrameWinSizeX[1];    _FrameWinPosY[1] = LCD_GetYSize() - _FrameWinSizeY[1];    _ButtonSizeX = (_FrameWinSizeX[1] - 20) / 2;    _ButtonSizeY = 20;    /* Create the control window incl. buttons */    _ahFrameWin[1] = FRAMEWIN_Create("Control", NULL, WM_CF_SHOW | WM_CF_STAYONTOP,                                     _FrameWinPosX[1], _FrameWinPosY[1],                                     _FrameWinSizeX[1], _FrameWinSizeY[1]);    _ahInfoWin[1] = WM_CreateWindowAsChild(0, 0, 0, 0, _ahFrameWin[1],                                            WM_CF_SHOW | WM_CF_STAYONTOP, 0, 0);    //_ahButton[0] = BUTTON_CreateAsChild(_FrameWinSizeX[1] / 20,    //                             + 20, _ButtonSizeX, _ButtonSizeY, _ahFrameWin[1],     //                             'H' , WM_CF_SHOW | WM_CF_STAYONTOP | WM_CF_MEMDEV);    //_ahButton[1] = BUTTON_CreateAsChild(_FrameWinSizeX[1] / 2,    //                             + 20, _ButtonSizeX, _ButtonSizeY, _ahFrameWin[1],     //                             'N' , WM_CF_SHOW | WM_CF_STAYONTOP | WM_CF_MEMDEV);    //BUTTON_SetText(_ahButton[0], "Stop");    //BUTTON_SetText(_ahButton[1], "Next");    _UpdateCmdWin();    WM_ExecIdle();  #endif  // Show Intro  /*  GUIDEMO_Intro();  #if GUI_WINSUPPORT    // Calculate position and size of FrameWin[0]    _FrameWinSizeX[0] = LCD_GetXSize() / 2;    _FrameWinSizeY[0] = 65;    _FrameWinPosX[0] = LCD_GetXSize() - _FrameWinSizeX[0];    _FrameWinPosY[0] = 0;    // Create info window and run the individual demos    _ahFrameWin[0] = FRAMEWIN_Create("礐/GUI Demo", NULL, WM_CF_STAYONTOP,                                      _FrameWinPosX[0], _FrameWinPosY[0], _FrameWinSizeX[0], _FrameWinSizeY[0]);    _ahInfoWin[0] = WM_CreateWindowAsChild(0, 0, 0, 0, _ahFrameWin[0], WM_CF_STAYONTOP, 0, 0);    WM_ExecIdle();  #endif  // Run the individual demos !  for (_iTest = 0; _apfTest[_iTest]; _iTest++) {    GUI_CONTEXT ContextOld;    GUI_SaveContext(&ContextOld);    _iTestMinor = 0;    _UpdateCmdWin();    (*_apfTest[_iTest])();    _CmdNext = 0;    GUI_RestoreContext(&ContextOld);  }  // Cleanup   #if GUI_WINSUPPORT    for (i = 0; i < countof(_ahFrameWin); i++) {      WM_DeleteWindow(_ahFrameWin[i]);    }    for (i = 0; i < countof(_ahInfoWin); i++) {      WM_DeleteWindow(_ahInfoWin[i]);    }  #endif  */}#else // GUIDEMO_LARGE void GUIDEMO_main(void) {  #if GUI_WINSUPPORT    int i;  #endif  #if GUI_WINSUPPORT    WM_SetCreateFlags(WM_CF_MEMDEV);  // Automatically use memory devices on all windows    _ButtonSizeX = 27;    _ButtonSizeY = 14;    _ahButton[0] = BUTTON_Create(LCD_GetXSize() - _ButtonSizeX * 2 - 5,                                 LCD_GetYSize() - _ButtonSizeY - 3,                                 _ButtonSizeX, _ButtonSizeY,                                  'H' , WM_CF_SHOW | WM_CF_STAYONTOP | WM_CF_MEMDEV);    _ahButton[1] = BUTTON_Create(LCD_GetXSize() - _ButtonSizeX - 3,                                 LCD_GetYSize() - _ButtonSizeY - 3,                                 _ButtonSizeX, _ButtonSizeY,                                  'N' , WM_CF_SHOW | WM_CF_STAYONTOP | WM_CF_MEMDEV);    BUTTON_SetFont(_ahButton[0], &GUI_Font8_ASCII);    BUTTON_SetFont(_ahButton[1], &GUI_Font8_ASCII);    BUTTON_SetText(_ahButton[0], "Stop");    BUTTON_SetText(_ahButton[1], "Next");    _UpdateCmdWin();    WM_ExecIdle();  #endif  // Show Intro   GUIDEMO_Intro();  // Run the individual demos !  for (_iTest = 0; _apfTest[_iTest]; _iTest++) {    GUI_CONTEXT ContextOld;    GUI_SaveContext(&ContextOld);    _iTestMinor = 0;    _UpdateCmdWin();    (*_apfTest[_iTest])();    _CmdNext = 0;    GUI_RestoreContext(&ContextOld);  }  // Cleanup   #if GUI_WINSUPPORT    for (i = 0; i < countof(_ahButton); i++) {      BUTTON_Delete(_ahButton[i]);    }  #endif}#endif // GUIDEMO_LARGE

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -