📄 testucgui.c
字号:
* 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 _aDialogCreate2[] = {
{ FRAMEWIN_CreateIndirect, "Dialog", 0, 10, 10, 180, 230, FRAMEWIN_CF_MOVEABLE, 0 },
{ BUTTON_CreateIndirect, "OK", GUI_ID_OK, 100, 5, 60, 20 },
{ BUTTON_CreateIndirect, "Cancel", GUI_ID_CANCEL, 100, 30, 60, 20 },
{ TEXT_CreateIndirect, "LText", 0, 10, 55, 48, 15, TEXT_CF_LEFT },
{ TEXT_CreateIndirect, "RText", 0, 10, 80, 48, 15, TEXT_CF_RIGHT },
{ EDIT_CreateIndirect, NULL, GUI_ID_EDIT0, 60, 55, 100, 15, 0, 50 },
{ EDIT_CreateIndirect, NULL, GUI_ID_EDIT1, 60, 80, 100, 15, 0, 50 },
{ TEXT_CreateIndirect, "Hex", 0, 10, 100, 48, 15, TEXT_CF_RIGHT },
{ EDIT_CreateIndirect, NULL, GUI_ID_EDIT2, 60, 100, 100, 15, 0, 6 },
{ TEXT_CreateIndirect, "Bin", 0, 10, 120, 48, 15, TEXT_CF_RIGHT },
{ EDIT_CreateIndirect, NULL, GUI_ID_EDIT3, 60, 120, 100, 15 },
{ LISTBOX_CreateIndirect, NULL, GUI_ID_LISTBOX0,10, 10, 60, 40 },
{ CHECKBOX_CreateIndirect, NULL, GUI_ID_CHECK0, 10, 140, 0, 0 },
{ CHECKBOX_CreateIndirect, NULL, GUI_ID_CHECK1, 30, 140, 0, 0 },
{ SLIDER_CreateIndirect, NULL, GUI_ID_SLIDER0, 60, 140, 100, 20 },
{ SLIDER_CreateIndirect, NULL, GUI_ID_SLIDER1, 10, 170, 150, 30 }
};
/*********************************************************************
*
* Initializers for listbox
*/
static const GUI_ConstString _apListBox[] = {
"English", "Deutsch", "Fran鏰is", "Japanese", "Italiano", NULL
};
/*********************************************************************
*
* static code
*
**********************************************************************
*/
/*********************************************************************
*
* Dialog callback routine
*/
static void _cbCallback2(WM_MESSAGE * pMsg) {
int NCode, Id;
WM_HWIN hEdit0, hEdit1, hEdit2, hEdit3, hListBox;
WM_HWIN hWin = pMsg->hWin;
switch (pMsg->MsgId) {
case WM_INIT_DIALOG:
/* Get window handles for all widgets */
hEdit0 = WM_GetDialogItem(hWin, GUI_ID_EDIT0);
hEdit1 = WM_GetDialogItem(hWin, GUI_ID_EDIT1);
hEdit2 = WM_GetDialogItem(hWin, GUI_ID_EDIT2);
hEdit3 = WM_GetDialogItem(hWin, GUI_ID_EDIT3);
hListBox = WM_GetDialogItem(hWin, GUI_ID_LISTBOX0);
/* Initialize all widgets */
EDIT_SetText(hEdit0, "EDIT widget 0");
EDIT_SetText(hEdit1, "EDIT widget 1");
EDIT_SetTextAlign(hEdit1, GUI_TA_LEFT);
EDIT_SetHexMode(hEdit2, 0x1234, 0, 0xffff);
EDIT_SetBinMode(hEdit3, 0x1234, 0, 0xffff);
LISTBOX_SetText(hListBox, _apListBox);
WM_DisableWindow (WM_GetDialogItem(hWin, GUI_ID_CHECK1));
CHECKBOX_Check( WM_GetDialogItem(hWin, GUI_ID_CHECK0));
CHECKBOX_Check( WM_GetDialogItem(hWin, GUI_ID_CHECK1));
SLIDER_SetWidth( WM_GetDialogItem(hWin, GUI_ID_SLIDER0), 5);
SLIDER_SetValue( WM_GetDialogItem(hWin, GUI_ID_SLIDER1), 50);
SCROLLBAR_CreateAttached(hListBox, SCROLLBAR_CF_VERTICAL);
break;
case WM_KEY:
switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) {
case GUI_KEY_ESCAPE:
GUI_EndDialog(hWin, 1);
break;
case GUI_KEY_ENTER:
GUI_EndDialog(hWin, 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(hWin, 0);
}
if (Id == GUI_ID_CANCEL) { /* Cancel Button */
GUI_EndDialog(hWin, 1);
}
break;
}
break;
default:
WM_DefaultProc(pMsg);
}
}
/*********************************************************************
*
* main
*
**********************************************************************
*/
void test_dialog2(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(_aDialogCreate2, GUI_COUNTOF(_aDialogCreate2), &_cbCallback2, 0, 0, 0);
}
#include "gui.h"
#include "button.h"
/*******************************************************************
*
* Bitmap data, 2 phone logos
*
********************************************************************
*/
static const GUI_COLOR Colors[] = { 0x000000, 0xFFFFFF };
static const GUI_LOGPALETTE Palette = { 2, 1, Colors };
static const unsigned char acPhone0[] = {
________, ________, ________, ________,
________, ________, ________, ________,
________, ________, ________, ________,
________, ________, ________, ________,
________, ________, ________, ________,
________, ________, ________, ________,
________, ________, ________, ________,
________, ________, ________, ________,
________, ________, ________, ________,
________, ________, ________, ________,
________, ________, ________, ________,
_____XXX, XXXXXXXX, XXXXXXXX, XXX_____,
___XXXXX, XXXXXXXX, XXXXXXXX, XXXXX___,
__XXXXXX, XXXXXXXX, XXXXXXXX, XXXXXX__,
_XXXXXXX, X_______, _______X, XXXXXXX_,
_XXXXXXX, X__XX___, ___XX__X, XXXXXXX_,
_XXXXXXX, X__XX___, ___XX__X, XXXXXXX_,
_XXXXXXX, X__XX___, ___XX__X, XXXXXXX_,
________, ___XX___, ___XX___, ________,
_______X, XXXXXXXX, XXXXXXXX, X_______,
______XX, XXXXXXXX, XXXXXXXX, XX______,
_____XXX, XXXX__X_, _X__XXXX, XXX_____,
____XXXX, XXXX__X_, _X__XXXX, XXXX____,
___XXXXX, XXXXXXXX, XXXXXXXX, XXXXX___,
___XXXXX, XXXX__X_, _X__XXXX, XXXXX___,
___XXXXX, XXXX__X_, _X__XXXX, XXXXX___,
___XXXXX, XXXXXXXX, XXXXXXXX, XXXXX___,
___XXXXX, XXXX__X_, _X__XXXX, XXXXX___,
___XXXXX, XXXX__X_, _X__XXXX, XXXXX___,
___XXXXX, XXXXXXXX, XXXXXXXX, XXXXX___,
___XXXXX, XXXXXXXX, XXXXXXXX, XXXXX___
};
static const unsigned char acPhone1[] = {
______XX, X_______, ________, ________,
____XXXX, XXXXX___, ________, ________,
____XXXX, XXXXXXX_, ________, ________,
___XXXXX, XXXXXXXX, X_______, ________,
___XXXXX, XXXXXXXX, XXX_____, ________,
_____XXX, XXXX_XXX, XXXXX___, ________,
_______X, XXXX___X, XXXXXXX_, ________,
________, _XX_____, _XXXXXXX, X_______,
________, ________, ___XXXXX, XXX_____,
________, ________, _____XXX, XXXXX___,
________, ________, _______X, XXXXXX__,
________, ________, ________, XXXXXXX_,
________, ________, ________, XXXXXXX_,
________, ________, _______X, XXXXXXXX,
________, ________, _______X, XXXXXXXX,
________, ___XX___, ___XX___, _XXXXXXX,
________, ___XX___, ___XX___, ___XXXX_,
________, ___XX___, ___XX___, _____XX_,
________, ___XX___, ___XX___, ________,
_______X, XXXXXXXX, XXXXXXXX, X_______,
______XX, XXXXXXXX, XXXXXXXX, XX______,
_____XXX, XXXX__X_, _X__XXXX, XXX_____,
____XXXX, XXXX__X_, _X__XXXX, XXXX____,
___XXXXX, XXXXXXXX, XXXXXXXX, XXXXX___,
___XXXXX, XXXX__X_, _X__XXXX, XXXXX___,
___XXXXX, XXXX__X_, _X__XXXX, XXXXX___,
___XXXXX, XXXXXXXX, XXXXXXXX, XXXXX___,
___XXXXX, XXXX__X_, _X__XXXX, XXXXX___,
___XXXXX, XXXX__X_, _X__XXXX, XXXXX___,
___XXXXX, XXXXXXXX, XXXXXXXX, XXXXX___,
___XXXXX, XXXXXXXX, XXXXXXXX, XXXXX___
};
static const GUI_BITMAP bm_1bpp_0 = { 32, 31, 4, 1, acPhone0, &Palette};
static const GUI_BITMAP bm_1bpp_1 = { 32, 31, 4, 1, acPhone1, &Palette};
/*******************************************************************
*
* Demonstrates the use of a BUTTON widget
*
********************************************************************
*/
static void DemoButton(void) {
BUTTON_Handle hButton;
int Stat = 0;
GUI_Init();
GUI_SetFont(&GUI_Font8x16);
GUI_DispStringHCenterAt("Click on phone button...", 160,0);
/* Create the button */
hButton = BUTTON_Create(142, 20, 36, 40, GUI_ID_OK, WM_CF_SHOW);
/* Modify the button attributes */
BUTTON_SetBkColor(hButton, 1, GUI_RED);
BUTTON_SetBitmapEx(hButton, 0, &bm_1bpp_0, 2, 4);
BUTTON_SetBitmapEx(hButton, 1, &bm_1bpp_1, 2, 4);
/* Loop until button is pressed */
while(GUI_GetKey() != GUI_ID_OK) {
if (Stat ^= 1) {
BUTTON_SetState(hButton,
BUTTON_STATE_HASFOCUS | BUTTON_STATE_INACTIVE);
} else {
BUTTON_SetState(hButton,
BUTTON_STATE_HASFOCUS | BUTTON_STATE_PRESSED);
}
GUI_Delay(500);
}
/* Delete button object */
BUTTON_Delete(hButton);
}
/*******************************************************************
*
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -