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

📄 testucgui.c

📁 uccos2的的源码文件
💻 C
📖 第 1 页 / 共 5 页
字号:
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Test Functions
#define INCLUDE_TESTDLG
#define INCLUDE_SHOWCOLOR
#define INCLUDE_PROBAR

#define Tell(var) myprintf("%s,%d:%s=0x%x,%d\r\n",__FILE__,__LINE__,#var,var,var)
extern int myprintf(char* format,...);
extern volatile unsigned int RunTimeMs;
#include "GUI.H"

int gi_kbhit = 0;
int NotToExit(void)
{
    if( gi_kbhit == 0 )
        return 1;
    gi_kbhit = 0;
    return 0;
}

void GUIScanKey(void)
{
    int Key;
    Key = kbhit();
    if( Key != 0  )
    {
        switch(Key)
        {
            case '[': Key = GUI_KEY_UP; break;
            case ']': Key = GUI_KEY_DOWN; break;
            case '=': Key = GUI_KEY_RIGHT; break;
            case '-': Key = GUI_KEY_LEFT; break;
            case ';': Key = GUI_KEY_HOME; break;
            case '\'': Key = GUI_KEY_END; break;
        }
        GUI_StoreKeyMsg(Key,1);
        gi_kbhit = 1;
    }
}

int EnableScanForucGUI = 0;
void ScanForucGUI(void)
{
    if( EnableScanForucGUI & 0x01 )
    {
        if ( (RunTimeMs % 100) == 0 )
        {
             GUIScanKey();
        }
    }

        if( EnableScanForucGUI & 0x02 )
        {
            if ( (RunTimeMs % 100) == 50 )
            {
                extern GUI_HID_STATE * GUI_TOUCH_State(void);
                 GUI_HID_STATE *  pState = GUI_TOUCH_State();
                 GetMousePos(&pState->x,&pState->y);
                 pState->Pressed = (MouseDown() == 1);
                 Touch2Screen(&pState->x,&pState->y);
                 //myprintf("x=%d y=%d p=%d\r\n",pState->x,pState->y,pState->Pressed);
            }
        }



}


#ifdef INCLUDE_TESTDLG
#include <stddef.h>
#include "GUI.H"
#include "DIALOG.h"


/*********************************************************************
*
*       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, "Radio button sample", 0,         10,  10, 260, 100, FRAMEWIN_CF_MOVEABLE},
  { RADIO_CreateIndirect,     NULL,     GUI_ID_RADIO0,   5, 10,0,0,0, 3  },
  { TEXT_CreateIndirect,     "Suspend" ,  0,            25,  10,  70,  20, TEXT_CF_LEFT },
  { TEXT_CreateIndirect,     "Shut down", 0,            25,  30,  70,  20, TEXT_CF_LEFT },
  { TEXT_CreateIndirect,     "Restart after",  0,       25,  50,  70,  20, TEXT_CF_LEFT },
  { TEXT_CreateIndirect,     "seconds",  0,            130,  50,  70,  20, TEXT_CF_LEFT },
  { EDIT_CreateIndirect,     "200",     GUI_ID_EDIT0,   95,  47,  30,  19, 0, 3},
  { BUTTON_CreateIndirect,   "OK",      GUI_ID_OK,     180,  10,  60,  20 },
  { BUTTON_CreateIndirect,   "Cancel",  GUI_ID_CANCEL, 180,  40,  60,  20 }
};

/*********************************************************************
*
*       static code
*
**********************************************************************
*/

/*********************************************************************
*
*       Dialog callback routine
*/
static void _cbCallback(WM_MESSAGE * pMsg) {
  int Sel;
  int NCode, Id;
  WM_HWIN hDlg, hItem;
  hDlg = pMsg->hWin;
  switch (pMsg->MsgId) {
    case WM_INIT_DIALOG:
      hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT0);
      EDIT_SetDecMode(hItem, 30,   0, 999, 0, 0);    /* Select decimal mode */
      WM_DisableWindow(hItem);
      break;
    case WM_KEY:
      switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) {
        case GUI_ID_ESCAPE:
          GUI_EndDialog(hDlg, 1);
          break;
        case GUI_ID_ENTER:
          GUI_EndDialog(hDlg, 0);
          break;
      }
      break;
    case WM_NOTIFY_PARENT:
      Id    = WM_GetId(pMsg->hWinSrc);      /* Id of widget */
      NCode = pMsg->Data.v;                 /* Notification code */
      switch (NCode) {
        case WM_NOTIFICATION_RELEASED:      /* React only if released */
          if (Id == GUI_ID_OK) {            /* OK Button */
            GUI_EndDialog(hDlg, 0);
          }
          if (Id == GUI_ID_CANCEL) {        /* Cancel Button */
            GUI_EndDialog(hDlg, 1);
          }
          break;
        case WM_NOTIFICATION_VALUE_CHANGED:
          hItem = WM_GetDialogItem(hDlg, GUI_ID_RADIO0);
          Sel   = RADIO_GetValue(hItem);
          hItem = WM_GetDialogItem(hDlg, GUI_ID_EDIT0);
          WM_SetEnableState(hItem, Sel == 2);
          break;
      }
      break;
    default:
      WM_DefaultProc(pMsg);
  }
}


/*********************************************************************
*
*       main
*
**********************************************************************
*/

void test_radio(void) {
  GUI_Init();
  WM_SetDesktopColor(GUI_RED);      /* Automacally update desktop window */
  WM_SetCreateFlags(WM_CF_MEMDEV);  /* Use memory devices on all windows to avoid flicker */
  GUI_ExecDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbCallback, 0, 0, 0);
}
#endif // #ifdef INCLUDE_TESTDLG


#ifdef INCLUDE_SHOWCOLOR
#include "gui.h"


void ShowColorBar(void) {
  int x0 = 60, y0 = 40, yStep = 15, i;
  int NumColors = LCD_GetDevCap(LCD_DEVCAP_NUMCOLORS);
  int xsize     = LCD_GetDevCap(LCD_DEVCAP_XSIZE) - x0;
  GUI_SetFont(&GUI_Font8x8);
  GUI_SetColor(GUI_WHITE);
  GUI_SetBkColor(GUI_BLACK);
  #if (LCD_FIXEDPALETTE)
    GUI_DispString("Fixed palette: ");
    GUI_DispDecMin(LCD_FIXEDPALETTE);
  #endif
  GUI_DispStringAt("Red",     0, y0 +      yStep);
  GUI_DispStringAt("Green",   0, y0 +  3 * yStep);
  GUI_DispStringAt("Blue",    0, y0 +  5 * yStep);
  GUI_DispStringAt("Grey",    0, y0 +  6 * yStep);
  GUI_DispStringAt("Yellow",  0, y0 +  8 * yStep);
  GUI_DispStringAt("Cyan",    0, y0 + 10 * yStep);
  GUI_DispStringAt("Magenta", 0, y0 + 12 * yStep);
  for (i = 0; i < xsize; i++) {
    U16 cs = (255 * (U32)i) / xsize;
    U16 x = x0 + i;;
    /* Red */
    GUI_SetColor(cs);
    GUI_DrawVLine(x, y0             , y0 +     yStep - 1);
    GUI_SetColor(0xff + (255 - cs) * 0x10100L);
    GUI_DrawVLine(x, y0 +      yStep, y0 + 2 * yStep - 1);
    /* Green */
    GUI_SetColor(cs<<8);
    GUI_DrawVLine(x, y0 +  2 * yStep, y0 + 3 * yStep - 1);
    GUI_SetColor(0xff00 + (255 - cs) * 0x10001L);
    GUI_DrawVLine(x, y0 +  3 * yStep, y0 + 4 * yStep - 1);
    /* Blue */
    GUI_SetColor(cs * 0x10000L);
    GUI_DrawVLine(x, y0 +  4 * yStep, y0 + 5 * yStep - 1);
    GUI_SetColor(0xff0000 + (255 - cs) * 0x101L);
    GUI_DrawVLine(x, y0 +  5 * yStep, y0 + 6 * yStep - 1);
    /* Gray */
    GUI_SetColor((U32)cs * 0x10101L);
    GUI_DrawVLine(x, y0 +  6 * yStep, y0 + 7 * yStep - 1);
    /* Yellow */
    GUI_SetColor(cs * 0x101);
    GUI_DrawVLine(x, y0 +  7 * yStep, y0 + 8 * yStep - 1);
    GUI_SetColor(0xffff + (255 - cs) * 0x10000L);
    GUI_DrawVLine(x, y0 +  8 * yStep, y0 + 9 * yStep - 1);
    /* Cyan */
    GUI_SetColor(cs * 0x10100L);
    GUI_DrawVLine(x, y0 +  9 * yStep, y0 + 10 * yStep - 1);
    GUI_SetColor(0xffff00 + (255 - cs) * 0x1L);
    GUI_DrawVLine(x, y0 + 10 * yStep, y0 + 11 * yStep - 1);
    /* Magenta */
    GUI_SetColor(cs * 0x10001);

⌨️ 快捷键说明

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