实例:WIDGET_Spinbox.c
效果:
#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);
}
}
效果:
#include "GUI.h"
#include "DIALOG.h"
static const GUI_WIDGET_CREATE_INFO _aDialogSpinbox[] = {
};
static void _cbBk(WM_MESSAGE * pMsg) {
}
static void _cbClient(WM_MESSAGE * pMsg) {
}
void MainTask(void) {
}