EMWin小工具(WIDGET)Spinbox

实例:WIDGET_Spinbox.c
效果:
EMWin小工具(WIDGET)Spinbox



#include "GUI.h"
#include "DIALOG.h"


static const GUI_WIDGET_CREATE_INFO _aDialogSpinbox[] = {
  { FRAMEWIN_CreateIndirect, "Spinbox",                    0,                                0,  0, 260, 160, 0, 0, 0 },
  { TEXT_CreateIndirect,        "Step value",              GUI_ID_TEXT0,        20, 15, 100,  21, 0, 0, 0 },
  { TEXT_CreateIndirect,        "Editmode \"Step\"", GUI_ID_TEXT1,        20, 42, 100,  21, 0, 0, 0 },
  { TEXT_CreateIndirect,        "Editmode \"Edit\"", GUI_ID_TEXT2,        20, 75, 100,  21, 0, 0, 0 },
  { SPINBOX_CreateIndirect,  NULL,                              GUI_ID_SPINBOX0, 130, 15,  60,  21, 0, 0, 0 },
  { SPINBOX_CreateIndirect,  NULL,                              GUI_ID_SPINBOX1, 130, 42,  60,  21, 0, 0, 0 },
  { SPINBOX_CreateIndirect,  NULL,                              GUI_ID_SPINBOX2, 130, 75,  60,  21, 0, 0, 0 },
};



static void _cbBk(WM_MESSAGE * pMsg) {
  int xSize;
  int ySize;

  switch (pMsg->MsgId) {
  case WM_PAINT:
      xSize = LCD_GetXSize();
      ySize = LCD_GetYSize();
      GUI_DrawGradientV(0, 0, xSize, ySize, GUI_BLUE, GUI_BLACK);
      GUI_SetColor(GUI_WHITE);
      GUI_SetFont(&GUI_Font24_ASCII);
      GUI_SetTextMode(GUI_TM_TRANS);
      GUI_DispStringHCenterAt("WIDGET_Spinbox - Sample", xSize / 2, 5);
      break;
  default:
      WM_DefaultProc(pMsg);
  }
}


static void _cbClient(WM_MESSAGE * pMsg) {
  EDIT_Handle hEdit;
  WM_HWIN        hItem;
  int                Value;
  int                NCode;
  int                Id;

  switch (pMsg->MsgId) {
  case WM_INIT_DIALOG:
      FRAMEWIN_SetFont(pMsg->hWin, GUI_FONT_16B_ASCII);
      FRAMEWIN_SetSkin(pMsg->hWin, FRAMEWIN_SKIN_FLEX);
      hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_TEXT0);
      TEXT_SetTextAlign(hItem, GUI_TA_VCENTER | GUI_TA_RIGHT);
      hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_TEXT1);
      TEXT_SetTextAlign(hItem, GUI_TA_VCENTER | GUI_TA_RIGHT);
      hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_TEXT2);
      TEXT_SetTextAlign(hItem, GUI_TA_VCENTER | GUI_TA_RIGHT);
      hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_SPINBOX0);
      SPINBOX_SetSkin(hItem, SPINBOX_SKIN_FLEX);
      hEdit = SPINBOX_GetEditHandle(hItem);
      EDIT_SetDecMode(hEdit, 1, 1, 10, 0, 0);
      hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_SPINBOX1);
      SPINBOX_SetSkin(hItem, SPINBOX_SKIN_FLEX);
      hEdit = SPINBOX_GetEditHandle(hItem);
      EDIT_SetDecMode(hEdit, 1, 0, 99999, 0, 0);
      hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_SPINBOX2);
      SPINBOX_SetSkin(hItem, SPINBOX_SKIN_FLEX);
      SPINBOX_SetEditMode(hItem, SPINBOX_EM_EDIT);
      SPINBOX_SetRange(hItem, 0, 99999);
      break;
  case WM_NOTIFY_PARENT:
      NCode = pMsg->Data.v;
      switch (NCode) {
      case WM_NOTIFICATION_VALUE_CHANGED:
          Id = WM_GetId(pMsg->hWinSrc);
          if (Id == GUI_ID_SPINBOX0) {
              Value = SPINBOX_GetValue(pMsg->hWinSrc);
              hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_SPINBOX1);
              SPINBOX_SetStep(hItem, Value);
          }
          break;
      default:
          WM_DefaultProc(pMsg);
      }
      break;
  case WM_PAINT:
      GUI_SetBkColor(0xAE9E8D);
      GUI_Clear();
      break;
  default:
      WM_DefaultProc(pMsg);
  }
}



void MainTask(void) {
  GUI_Init();
  WM_SetCallback(WM_HBKWIN, _cbBk);
  TEXT_SetDefaultTextColor(GUI_WHITE);
  GUI_CreateDialogBox(_aDialogSpinbox, GUI_COUNTOF(_aDialogSpinbox), _cbClient,  WM_HBKWIN,  30,  60);
  while (1) {
      GUI_Delay(100);
  }
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值