static void myEditTextListener(WM_MESSAGE* pMsg) { const WM_KEY_INFO* pInfo; WM_HWIN thisEditText; switch(pMsg->MsgId) { case WM_KEY: pInfo = (WM_KEY_INFO*)pMsg->Data.p; switch(pInfo->Key) { case GUI_KEY_LEFT: WM_SetFocus(menuWin); break; default: EDIT_Callback(pMsg); break; } break; default: EDIT_Callback(pMsg); break; } }
/********************************************************************* * * _OnTouch */ static void _OnTouch(SLIDER_Handle hObj, SLIDER_Obj* pObj, WM_MESSAGE*pMsg) { GUI_TOUCH_tState* pState = (GUI_TOUCH_tState*)pMsg->Data.p; if (pMsg->Data.p) { /* Something happened in our area (pressed or released) */ if (pState->Pressed) { int Sel; int Range = (pObj->Max - pObj->Min); int x0, xsize; int x; x0 = 1 + pObj->Width/2; /* 1 pixel focus rectangle + width of actual slider */ x = (pObj->Widget.State & WIDGET_STATE_VERTICAL) ? pState->y : pState->x; x -= x0; xsize = WIDGET__GetWindowSizeX(hObj) - 2 * x0; if (x <= 0) { Sel = pObj->Min; } else if (x >= xsize) { Sel = pObj->Max; } else { Sel = GUI__DivideRound(Range* x, xsize); Sel += pObj->Min; } WM_SetFocus(hObj); WM_SetCapture(hObj, 1); SLIDER_SetValue(hObj, Sel); } } }
/********************************************************************* * * GUI_EditHex */ U32 GUI_EditHex(U32 Value, U32 Min, U32 Max, int Len, int xsize) { U32 Ret = Value; int Key, x, y, ysize, Id; EDIT_Handle hEdit; EDIT_Obj* pObj; const GUI_FONT GUI_UNI_PTR * pOldFont = GUI_SetFont(EDIT_GetDefaultFont()); x = GUI_GetDispPosX(); y = GUI_GetDispPosY(); if (xsize == 0) xsize = GUI_GetCharDistX('X') * Len + 6; ysize = GUI_GetFontSizeY(); Id = 0x1234; hEdit = EDIT_Create(x, y, xsize, ysize, Id, Len, 0); pObj = EDIT_H2P(hEdit); EDIT_SetHexMode(hEdit, Value, Min, Max); WM_SetFocus(hEdit); do { Key = GUI_WaitKey(); } while ((Key != GUI_KEY_ESCAPE) && (Key != GUI_KEY_ENTER) && (Key != 0)); GUI_SetFont(pOldFont); if (Key == GUI_KEY_ENTER) Ret = pObj->CurrentValue; EDIT_Delete(hEdit); return Ret; }
/** * @brief Show Message Box * @param hWin: pointer to the parent handle * @param pTitle: pointer to the title * @param pText: pointer to the text * @retval int */ static int _ShowMessageBox(WM_HWIN hWin, const char* pTitle, const char* pText, int YesNo) { WM_HWIN hFrame, hClient, hBut; int r = 0; /* Create frame win */ hFrame = FRAMEWIN_CreateEx(25, 82, 190, 90, hWin, WM_CF_SHOW, FRAMEWIN_CF_MOVEABLE, 0, pTitle, &_cbMessageBox); FRAMEWIN_SetClientColor (hFrame, GUI_WHITE); FRAMEWIN_SetFont (hFrame, &GUI_Font16B_ASCII); FRAMEWIN_SetTextAlign (hFrame, GUI_TA_HCENTER); /* Create dialog items */ hClient = WM_GetClientWindow(hFrame); TEXT_CreateEx(10, 7, 170, 30, hClient, WM_CF_SHOW, GUI_TA_HCENTER, 0, pText); if (YesNo) { hBut = BUTTON_CreateEx(97, 45, 55, 18, hClient, WM_CF_SHOW, 0, GUI_ID_CANCEL); BUTTON_SetText (hBut, "No"); hBut = BUTTON_CreateEx(32, 45, 55, 18, hClient, WM_CF_SHOW, 0, GUI_ID_OK); BUTTON_SetText (hBut, "Yes"); } else { hBut = BUTTON_CreateEx(64, 45, 55, 18, hClient, WM_CF_SHOW, 0, GUI_ID_OK); BUTTON_SetText (hBut, "Ok"); } WM_SetFocus(hFrame); WM_MakeModal(hFrame); r = GUI_ExecCreatedDialog(hFrame); return r; }
/******************************************************************* * * MainTask * ******************************************************************** */ void MainTask_AppCalendar(void) { WM_HWIN hWinCalendar; u32 curtimestamp = 0; struct tm currUtime; //Init Time curtimestamp = Time_GetRTCTimeByUnix(); currUtime = Time_ConvUnixToCalendar(curtimestamp); cldDate.year = currUtime.tm_year; cldDate.month = currUtime.tm_mon+1; cldDate.day = currUtime.tm_mday; if (currUtime.tm_wday == 0) cldDate.weekday = 7; else cldDate.weekday = currUtime.tm_wday; //GUI_Init(); hWinCalendar = WM_CreateWindow(320, 0, 320, 240, WM_CF_SHOW, _cbCalendar, 0); WM_SetFocus(hWinCalendar); _MoveShiftWindow(&hWinCalendar, MEMDEV_ANIMATION_LEFT, WM_Shift_ToLCD, 0); WM_EnableMemdev(hWinCalendar); _ShowButton(hWinCalendar); while (!GUI_CheckCancel(APP_Calendar)) { //GUI_Delay(10); GUI_Exec(); GUI_X_ExecIdle(); } WM_DeleteWindow(hWinCalendar); hWinCalendar = 0; }
/********************************************************************* * * _OnTouch */ static void _OnTouch(RADIO_Handle hObj, RADIO_Obj* pObj, WM_MESSAGE*pMsg) { int Notification; int Hit = 0; GUI_PID_STATE* pState = (GUI_PID_STATE*)pMsg->Data.p; if (pMsg->Data.p) { /* Something happened in our area (pressed or released) */ if (pState->Pressed) { int y, Sel; y = pState->y; Sel = y / pObj->Spacing; y -= Sel * pObj->Spacing; if (y <= pObj->Height) { RADIO_SetValue(hObj, Sel); } if (WM_IsFocussable(hObj)) { WM_SetFocus(hObj); } Notification = WM_NOTIFICATION_CLICKED; } else { Hit = 1; Notification = WM_NOTIFICATION_RELEASED; } } else { Notification = WM_NOTIFICATION_MOVED_OUT; } WM_NotifyParent(hObj, Notification); if (Hit == 1) { GUI_DEBUG_LOG("RADIO: Hit\n"); GUI_StoreKey(pObj->Widget.Id); } }
/******************************************************************* * * _DemoHardkey Demonstrates HARDKEY simulation with a listbox */ static void _DemoHardkey(void) { LISTBOX_Handle hListBox; GUI_SetBkColor(GUI_BLACK); GUI_Clear(); GUI_SetColor(GUI_WHITE); GUI_SetTextAlign(GUI_TA_HCENTER); GUI_SetFont(&GUI_Font24_ASCII); GUI_DispStringAt("Hardkey - Sample", 160, 5); GUI_SetFont(&GUI_Font8x8); GUI_DispStringHCenterAt("Exit", 65, 230); GUI_DispStringHCenterAt("Up", 160, 230); GUI_DispStringHCenterAt("Down", 255, 230); /* Create the listbox */ hListBox = LISTBOX_Create(_aListBox, 100, 100, 120, 75, WM_CF_SHOW); WM_SetFocus(hListBox); LISTBOX_SetFont(hListBox, &GUI_Font13B_1); SCROLLBAR_CreateAttached(hListBox, SCROLLBAR_CF_VERTICAL); /* Handle the listbox */ while (!_Ready) { GUI_Delay(10); } /* Delete listbox widget */ LISTBOX_Delete(hListBox); GUI_Clear(); }
/********************************************************************* * * _cbCellEdit * * Function description * Callback function of the EDIT widget which is created above a * LISTVIEW cell. */ static void _cbCellEdit(WM_MESSAGE * pMsg) { CELL_EDIT_ORG CellEditOrg; WM_KEY_INFO * pKeyInfo; WM_HWIN hList; char acText[LEN_ITEM_TEXT]; switch (pMsg->MsgId) { case WM_KEY: pKeyInfo = (WM_KEY_INFO *)pMsg->Data.p; if (pKeyInfo->PressedCnt == 0) { if (pKeyInfo->Key == GUI_KEY_ENTER) { WM_SetFocus(WM_GetParent(pMsg->hWin)); WM_DeleteWindow(pMsg->hWin); break; } } EDIT_Callback(pMsg); break; case WM_SET_FOCUS: if (pMsg->Data.v == 0) { WM_DeleteWindow(pMsg->hWin); } else { EDIT_Callback(pMsg); } break; case WM_DELETE: EDIT_GetUserData(pMsg->hWin, &CellEditOrg, sizeof(CELL_EDIT_ORG)); hList = WM_GetParent(pMsg->hWin); EDIT_GetText(pMsg->hWin, acText, LEN_ITEM_TEXT); LISTVIEW_SetItemTextSorted(hList, CellEditOrg.Col, CellEditOrg.Row, acText); break; default: EDIT_Callback(pMsg); } }
/********************************************************************* * * _cbCallback */ static void _cbCallback(WM_MESSAGE * pMsg) { WM_HWIN hDlg, hWinSrc, hItem; int Id, NCode; hWinSrc = pMsg->hWinSrc; hDlg = pMsg->hWin; switch (pMsg->MsgId) { case WM_INIT_DIALOG: FRAMEWIN_SetFont(hDlg, &GUI_Font24B_ASCII); FRAMEWIN_SetTextAlign(hDlg, GUI_TA_HCENTER); FRAMEWIN_SetClientColor(hDlg, GUI_RED); hItem = WM_GetDialogItem(hDlg, GUI_ID_CHECK0); CHECKBOX_SetText(hItem, "Enable alarm"); hItem = WM_GetDialogItem(hDlg, GUI_ID_CHECK1); CHECKBOX_SetText(hItem, "Enable display lighting"); hItem = WM_GetDialogItem(hDlg, GUI_ID_CHECK2); CHECKBOX_SetText(hItem, "Enable color mode"); break; case WM_NOTIFY_PARENT: Id = WM_GetId(hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ if (NCode == WM_NOTIFICATION_RELEASED) { /* React only if released */ if (Id == GUI_ID_OK) { /* OK Button */ GUI_SetOrg(0, 0); WM_SetFocus(_hPrevWin); } } break; default: WM_DefaultProc(pMsg); } }
/********************************************************************* * * _GetFileName * * Purpose: * Returns the file name of the XBF file to be used */ static void _GetFileName(char * pPath, unsigned MaxSize) { WM_HWIN hWin; /* Set default value on first call */ if (!strlen(pPath)) { strcpy(pPath, "Sample\\GUI\\FONT_ShowXBF\\ExtBinFont.xbf"); } /* Display small hint */ GUI_SetFont(&GUI_Font10_ASCII); GUI_DispStringHCenterAt("Please enter the file name of the XBF-file:", 160, 80); /* Create edit widget */ hWin = EDIT_Create(10, 120, 300, 20, 0, MaxSize, WM_CF_SHOW); EDIT_SetText(hWin, pPath); WM_SetFocus(hWin); /* Wait until GUI_KEY_ENTER has been pressed */ while (GUI_GetKey() != GUI_KEY_ENTER) { GUI_Delay(100); } /* Get filename from EDIT widget */ EDIT_GetText(hWin, pPath, MaxSize); /* Create edit widget */ WM_DeleteWindow(hWin); /* Clear screen */ GUI_ClearRect(0, 40, 319, 239); }
/********************************************************************* * * _OnTouch */ static void _OnTouch(SLIDER_Handle hObj, SLIDER_Obj* pObj, WM_MESSAGE*pMsg) { const GUI_PID_STATE* pState = (const GUI_PID_STATE*)pMsg->Data.p; if (pMsg->Data.p) { /* Something happened in our area (pressed or released) */ if (pState->Pressed) { int x0, xsize, x, Sel, Range; Range = (pObj->Max - pObj->Min); x0 = 1 + pObj->Width / 2; /* 1 pixel focus rectangle + width of actual slider */ x = (pObj->Widget.State & WIDGET_STATE_VERTICAL) ? pState->y : pState->x; x -= x0; xsize = WIDGET__GetWindowSizeX(hObj) - 2 * x0; if (x <= 0) { Sel = pObj->Min; } else if (x >= xsize) { Sel = pObj->Max; } else { int Div; Div = xsize ? xsize : 1; /* Make sure we do not divide by 0, even though xsize should never be 0 in this case anyhow */ Sel = pObj->Min + ((U32)Range * (U32)x + Div / 2) / Div; } if (WM_IsFocussable(hObj)) { WM_SetFocus(hObj); } WM_SetCapture(hObj, 1); SLIDER_SetValue(hObj, Sel); if ((pObj->Widget.State & SLIDER_STATE_PRESSED) == 0){ _SliderPressed(hObj, pObj); } } else { /* React only if button was pressed before ... avoid problems with moving / hiding windows above (such as dropdown) */ if (pObj->Widget.State & SLIDER_STATE_PRESSED) { _SliderReleased(hObj, pObj); } } } }
WM_HWIN CreateLogin(void) { WM_HWIN hWin; hWin = GUI_CreateDialogBox(Login_aDialogCreate, GUI_COUNTOF(Login_aDialogCreate), &Login_cbDialog, WM_HBKWIN, 0, 0); WM_SetFocus(hWin); GUI_Delay(10); return hWin; }
/********************************************************************* * * MYWIDGET_Callback */ void MYWIDGET_Callback(WM_MESSAGE * pMsg) { MYWIDGET_Handle hWin; GUI_PID_STATE * pState; MYWIDGET_Obj MyWidget; GUI_RECT WinRect; int ColorIndex; U8 Pressed; hWin = pMsg->hWin; WM_GetWindowRectEx(hWin, &WinRect); GUI_MoveRect(&WinRect, -WinRect.x0, -WinRect.y0); WM_GetUserData(hWin, &MyWidget, sizeof(MYWIDGET_Obj)); switch (pMsg->MsgId) { case WM_PAINT: if (WM_IsEnabled(hWin)) { if (MyWidget.Pressed) { ColorIndex = MYWIDGET_CI_PRESSED; } else { ColorIndex = MYWIDGET_CI_UNPRESSED; } } else { ColorIndex = MYWIDGET_CI_DISABLED; } GUI_SetColor(MyWidget.aBkColor[ColorIndex]); GUI_FillRectEx(&WinRect); if (WM_HasFocus(hWin)) { GUI_SetColor(MyWidget.FocusColor); GUI_DrawRectEx(&WinRect); } GUI_SetColor(MyWidget.aTextColor[ColorIndex]); GUI_SetTextMode(GUI_TM_TRANS); GUI_DispStringInRect(MyWidget.pText, &WinRect, GUI_TA_HCENTER | GUI_TA_VCENTER); break; case WM_TOUCH: pState = (GUI_PID_STATE *)pMsg->Data.p; if (pState) { Pressed = pState->Pressed; } else { Pressed = 0; } if (MyWidget.Pressed != Pressed) { MyWidget.Pressed = Pressed; WM_SetUserData(hWin, &MyWidget, sizeof(MYWIDGET_Obj)); if (Pressed) { WM_SetFocus(hWin); } WM_InvalidateWindow(hWin); } break; case WM_SET_FOCUS: if (pMsg->Data.v) { pMsg->Data.v = 0; } WM_InvalidateWindow(hWin); break; default: WM_DefaultProc(pMsg); } }
//向上选择 void RMD_SelEdt_Up(WM_MESSAGE * pMsg) { WM_HWIN hItem; if(RMD_key_cnt == 0) { hItem=WM_GetDialogItem(pMsg->hWin,ID_EDIT_2); WM_SetFocus(hItem); RMD_key_cnt = 2; } else { RMD_key_cnt--; hItem=WM_GetDialogItem(pMsg->hWin,(ID_EDIT_0+RMD_key_cnt)); WM_SetFocus(hItem); } }
//向下选择 void RMD_SelEdt_Down(WM_MESSAGE *pMsg) { WM_HWIN hItem; if(RMD_key_cnt == 2) { hItem=WM_GetDialogItem(pMsg->hWin,ID_EDIT_0); WM_SetFocus(hItem); RMD_key_cnt = 0; } else { RMD_key_cnt++; hItem=WM_GetDialogItem(pMsg->hWin,(ID_EDIT_0+RMD_key_cnt)); WM_SetFocus(hItem); } }
/********************************************************************* * * _DROPDOWN_Callback */ static void _DROPDOWN_Callback (WM_MESSAGE*pMsg) { DROPDOWN_Handle hObj = pMsg->hWin; DROPDOWN_Obj* pObj = DROPDOWN_H2P(hObj); char IsExpandedBeforeMsg; IsExpandedBeforeMsg = pObj->hListWin ? 1 : 0; /* Let widget handle the standard messages */ if (WIDGET_HandleActive(hObj, pMsg) == 0) { return; } switch (pMsg->MsgId) { case WM_NOTIFY_PARENT: switch (pMsg->Data.v) { case WM_NOTIFICATION_SCROLL_CHANGED: WM_NotifyParent(hObj, WM_NOTIFICATION_SCROLL_CHANGED); break; case WM_NOTIFICATION_CLICKED: DROPDOWN_SetSel(hObj, LISTBOX_GetSel(pObj->hListWin)); WM_SetFocus(hObj); break; case LISTBOX_NOTIFICATION_LOST_FOCUS: DROPDOWN_Collapse(hObj); break; } break; case WM_PID_STATE_CHANGED: if (IsExpandedBeforeMsg == 0) { /* Make sure we do not react a second time */ const WM_PID_STATE_CHANGED_INFO * pInfo = (const WM_PID_STATE_CHANGED_INFO*)pMsg->Data.p; if (pInfo->State) { DROPDOWN_Expand(hObj); } } break; case WM_TOUCH: if (_OnTouch(hObj, pMsg) == 0) { return; } break; case WM_PAINT: _Paint(hObj); break; case WM_DELETE: _FreeAttached(pObj); break; /* No return here ... WM_DefaultProc needs to be called */ case WM_KEY: if ( ((const WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt >0) { int Key = ((const WM_KEY_INFO*)(pMsg->Data.p))->Key; switch (Key) { case GUI_KEY_TAB: break; /* Send to parent by not doing anything */ default: DROPDOWN_AddKey(hObj, Key); return; } } break; } WM_DefaultProc(pMsg); }
/********************************************************************* * * WINDOW_Callback */ void WINDOW_Callback(WM_MESSAGE* pMsg) { WM_HWIN hObj; WINDOW_OBJ* pObj; WM_CALLBACK* cb; hObj = pMsg->hWin; pObj = WINDOW_H2P(hObj); cb = pObj->cb; switch (pMsg->MsgId) { case WM_HANDLE_DIALOG_STATUS: if (pMsg->Data.p) { /* set pointer to Dialog status */ pObj->pDialogStatus = (WM_DIALOG_STATUS*)pMsg->Data.p; } else { /* return pointer to Dialog status */ pMsg->Data.p = pObj->pDialogStatus; } return; case WM_SET_FOCUS: if (pMsg->Data.v) { /* Focus received */ if (pObj->hFocussedChild && (pObj->hFocussedChild != hObj)) { WM_SetFocus(pObj->hFocussedChild); } else { pObj->hFocussedChild = WM_SetFocusOnNextChild(hObj); } pMsg->Data.v = 0; /* Focus change accepted */ } return; case WM_GET_ACCEPT_FOCUS: WIDGET_HandleActive(hObj, pMsg); return; case WM_NOTIFY_CHILD_HAS_FOCUS: _OnChildHasFocus(hObj, pObj, pMsg); return; case WM_KEY: if (((const WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt > 0) { int Key = ((const WM_KEY_INFO*)(pMsg->Data.p))->Key; switch (Key) { case GUI_KEY_BACKTAB: pObj->hFocussedChild = WM_SetFocusOnPrevChild(hObj); break; /* Send to parent by not doing anything */ case GUI_KEY_TAB: pObj->hFocussedChild = WM_SetFocusOnNextChild(hObj); break; /* Send to parent by not doing anything */ } } break; case WM_PAINT: LCD_SetBkColor(WINDOW__DefaultBkColor); GUI_Clear(); break; case WM_GET_BKCOLOR: pMsg->Data.Color = WINDOW__DefaultBkColor; return; /* Message handled */ } if (cb) { (*cb)(pMsg); } else { WM_DefaultProc(pMsg); } }
static void sldListener(WM_MESSAGE * pMsg) { const WM_KEY_INFO * pInfo; WM_MESSAGE myMsg; switch(pMsg->MsgId) { case WM_KEY: pInfo = (WM_KEY_INFO*)(pMsg->Data.p); switch(pInfo->Key) { case GUI_KEY_PWM_INC: WM_SendMessageNoPara(subWins[3], USER_MSG_DIM); break; case GUI_KEY_BACKSPACE: if(Mem_isEqual(&SysConf, &agentConf, sizeof(SysConf)) ) { WM_SetFocus(Slideres[0]); WM_SetFocus(menuWin); } else { myMsg.hWin = WM_GetClientWindow(confirmWin); myMsg.hWinSrc = subWins[3]; myMsg.MsgId = USER_MSG_CHOOSE; myMsg.Data.v = SYS_SETTING; WM_SendMessage(myMsg.hWin, &myMsg); WM_BringToTop(confirmWin); WM_SetFocus(WM_GetDialogItem (confirmWin,GUI_ID_BUTTON0)); } break; default: HSD_SLIDER_Callback(pMsg); break; } break; default: HSD_SLIDER_Callback(pMsg); break; } }
void ADS_SelEdt_Down(WM_MESSAGE *pMsg) { WM_HWIN hItem; if(ads_press_cnt == 1) { hItem=WM_GetDialogItem(pMsg->hWin,ID_EDIT_0); WM_SetFocus(hItem); ads_press_cnt = 0; } else { ads_press_cnt++; hItem=WM_GetDialogItem(pMsg->hWin,(ID_EDIT_0+ads_press_cnt)); WM_SetFocus(hItem); } }
/********************************************************************* * * MainTask */ void MainTask(void) { WM_HWIN hTree; TREEVIEW_ITEM_Handle hNode; int xSize, ySize; char acBuffer[(TREEVIEW_DEPTH << 1) + 1]; // // Initialize emWin // WM_SetCreateFlags(WM_CF_MEMDEV); GUI_Init(); xSize = LCD_GetXSize(); ySize = LCD_GetYSize(); // // Set defaults for background and widgets // WM_SetCallback(WM_HBKWIN, _cbBk); SCROLLBAR_SetDefaultSkin(SCROLLBAR_SKIN_FLEX); SCROLLBAR_SetDefaultWidth(20); SCROLLBAR_SetThumbSizeMin(25); // // // GUI_SetFont(GUI_FONT_24_ASCII); GUI_DispStringHCenterAt("Customized TREEVIEW widget", 160, 5); // // Create TREEVIEW // hTree = TREEVIEW_CreateEx(0, 35, xSize, ySize - 35, WM_HBKWIN, WM_CF_SHOW | WM_CF_HASTRANS, 0, GUI_ID_TREEVIEW0); TREEVIEW_SetAutoScrollV(hTree, 1); TREEVIEW_SetFont(hTree, GUI_FONT_24_ASCII); TREEVIEW_SetIndent(hTree, 30); TREEVIEW_SetTextIndent(hTree, 20); TREEVIEW_SetImage(hTree, TREEVIEW_BI_PLUS, &bmPlus); TREEVIEW_SetImage(hTree, TREEVIEW_BI_MINUS, &bmMinus); TREEVIEW_SetImage(hTree, TREEVIEW_BI_CLOSED, &bmClosed); TREEVIEW_SetImage(hTree, TREEVIEW_BI_OPEN, &bmOpen); TREEVIEW_SetImage(hTree, TREEVIEW_BI_LEAF, &bmLeaf); TREEVIEW_SetBitmapOffset(hTree, TREEVIEW_BI_PM, -21, -6); TREEVIEW_SetOwnerDraw(hTree, _TREEVIEW_OwnerDraw); TREEVIEW_SetBkColor(hTree, TREEVIEW_CI_SEL, USER_COLOR); TREEVIEW_SetBkColor(hTree, TREEVIEW_CI_UNSEL, GUI_BLACK); TREEVIEW_SetTextColor(hTree, TREEVIEW_CI_SEL, GUI_WHITE); TREEVIEW_SetTextColor(hTree, TREEVIEW_CI_UNSEL, GUI_WHITE); WIDGET_SetEffect(hTree, &WIDGET_Effect_None); // // Fill TREEVIEW // hNode = TREEVIEW_InsertItem(hTree, TREEVIEW_ITEM_TYPE_NODE, 0, 0, "Tree"); _FillNode(hTree, hNode, NUM_CHILD_NODES, NUM_CHILD_ITEMS, TREEVIEW_DEPTH, TREEVIEW_DEPTH, acBuffer, acBuffer); TREEVIEW_ITEM_Expand(hNode); WM_SetFocus(hTree); while (1) { GUI_Delay(100); } }
/******************************************************************* * * MainTask * ******************************************************************** */ void MainTask_AppClock(void) { WM_HWIN hWinClock; GUI_AUTODEV AutoDev; PARAM Param; int hour = 0; time_t oldtimestamp = 0; time_t curtimestamp = 0; struct tm *currUtime; //Init time curtimestamp = time(0); oldtimestamp = curtimestamp; currUtime=localtime(&curtimestamp); hWinClock = WM_CreateWindowAsChild(0, 0, 320, 240, WM_HBKWIN, WM_CF_SHOW, _cbClock, 0); WM_SelectWindow(hWinClock); WM_SetCreateFlags(WM_CF_MEMDEV); WM_SetFocus(hWinClock); _MoveShiftWindow(&hWinClock, MEMDEV_ANIMATION_LEFT, WM_Shift_ToLCD, 0); /*hWinClock = WM_CreateWindow(0, 0, 320, 240, WM_CF_SHOW, _cbClock, 0); WM_SetFocus(hWinClock); //_MoveShiftWindow(&hWinCalendar, MEMDEV_ANIMATION_LEFT, WM_Shift_ToLCD, 0); WM_EnableMemdev(hWinClock);*/ /* GUI_SetBkColor(GUI_WHITE); GUI_Clear(); GUI_SetColor(GUI_BLACK);*/ GUI_AA_EnableHiRes(); GUI_AA_SetFactor(MAG); GUI_MEMDEV_CreateAuto(&AutoDev); while (!GUI_CheckCancel(APP_Clock)) { GUI_Delay(10); curtimestamp = time(0); currUtime = localtime(&curtimestamp); if (1 == curtimestamp - oldtimestamp) { Param.Angle1 = (59 - currUtime->tm_sec) * 6 * (3.1415926f / 180); Param.Angle2 = (3599 - ((currUtime->tm_min * 60) + (currUtime->tm_sec)))*0.1*(3.1415926f / 180); hour = (currUtime->tm_hour>12) ? (currUtime->tm_hour - 12) : (currUtime->tm_hour); Param.Angle3 = (43199 - ((hour * 3600) + (currUtime->tm_min * 60) + (currUtime->tm_sec)))*0.0083333*(3.1415926f / 180); GUI_RotatePolygon(Param.aPoint1, _aNeedle[0], GUI_COUNTOF(_aNeedle[0]), Param.Angle1); GUI_RotatePolygon(Param.aPoint2, _aNeedle[1], GUI_COUNTOF(_aNeedle[1]), Param.Angle2); GUI_RotatePolygon(Param.aPoint3, _aNeedle[2], GUI_COUNTOF(_aNeedle[2]), Param.Angle3); GUI_MEMDEV_DrawAuto(&AutoDev, &Param.AutoDevInfo, &Draw, &Param); } oldtimestamp = curtimestamp; } WM_DeleteWindow(hWinClock); hWinClock = 0; }
void ADS_SelEdt_Up(WM_MESSAGE * pMsg) { WM_HWIN hItem; if(ads_press_cnt == 0) { hItem=WM_GetDialogItem(pMsg->hWin,ID_EDIT_1); WM_SetFocus(hItem); ads_press_cnt = 1; } else { ads_press_cnt--; hItem=WM_GetDialogItem(pMsg->hWin,(ID_EDIT_0+ads_press_cnt)); WM_SetFocus(hItem); } }
/********************************************************************* * * xIconSelBtn_PopupWin */ void xIconSelBtn_PopupWin(xIconSelBtn_Handle hWin) { static xIconSelBtn_OBJ tWidget; static xIconSelBtn_OBJ *pWidget; GUI_RECT r; if(!hWin) return; DEBUGOUT("xIconSelBtn_PopupWin(hWin) = 0x%08x\r\n", hWin); BUTTON_GetUserData(hWin, &tWidget, sizeof(xIconSelBtn_OBJ)); pWidget = &tWidget; if(tWidget.hPopupWin == NULL) { r = tWidget.PopupWinRECT; DEBUGOUT("xIconSelBtn_PopupWin() new Window(%d,%d,%d,%d): %d items\r\n",r.x0,r.y0,r.x1,r.y1, tWidget.NumItems); tWidget.hPopupWin = WM_CreateWindowAsChild(r.x0, r.y0, r.x1 - r.x0, r.y1 - r.y0, NULL, //hParent WM_CF_SHOW, //WinFlags xIconSelBtn_PopupWin_Callback, //WM_CALLBACK * cb sizeof(xIconSelBtn_OBJ*) ); if(tWidget.hPopupWin == NULL) { DEBUGOUT("\t new Window creating failed!!!\r\n"); return; } tWidget.MovingIndex = tWidget.SelectedIndex; WM_SetUserData(tWidget.hPopupWin, &pWidget, sizeof(xIconSelBtn_OBJ*)); WM_SetFocus(tWidget.hPopupWin); } else { tWidget.MovingIndex = tWidget.SelectedIndex; WM_SetUserData(tWidget.hPopupWin, &pWidget, sizeof(xIconSelBtn_OBJ*)); WM_ShowWindow(tWidget.hPopupWin); WM_SetFocus(tWidget.hPopupWin); } }
/** * 函 数 名: _cbSysInfo(WM_MESSAGE* pMsg) * 描 述: 显示系统信息 * 参 数: pMsg * 返 回 值: 无 */ void _cbSysInfo(WM_MESSAGE* pMsg) { BUTTON_Handle ReurnButton; WM_HWIN hWin = pMsg->hWin; switch (pMsg->MsgId) { case WM_CREATE: /* 设置聚焦*/ WM_SetFocus(hWin); /* 创建返回按键按钮 */ ReurnButton = BUTTON_CreateEx(118,174,94, 52, hWin, WM_CF_SHOW, 0, SYS_INFO_BUTTON_RETURN); BUTTON_SetBitmapEx(ReurnButton,BUTTON_BI_UNPRESSED, &bmSys_return_xg, 0 ,0); BUTTON_SetBitmapEx(ReurnButton,BUTTON_BI_PRESSED, &bmSys_return, 0 ,0); break; case WM_KEY: /* 按下某个键后发送到当前包含焦点的窗口*/ switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) { case GUI_KEY_ESCAPE: GUI_EndDialog(hWin, 1); break; case GUI_KEY_TAB: WM_SetFocusOnNextChild(hWin); break; } break; case WM_PAINT: GUI_SetBkColor(BK_COLOR_2); GUI_Clear(); GUI_UC_SetEncodeNone(); GUI_SetFont(&GUI_FontHZ16); GUI_DispStringAt("MODEL:7H3DFDM-FW ",30,20); GUI_DispStringAt("VERSION: V0.01",30,50); GUI_DispStringAt("SYSINFO: IN TEST ",30,80); GUI_DispStringAt(__DATE__ " " __TIME__,50,110); GUI_UC_SetEncodeUTF8(); //_ShowBMPEx("1.bmp"); break; case WM_NOTIFY_PARENT: if (pMsg->Data.v == WM_NOTIFICATION_RELEASED) { int Id = WM_GetId(pMsg->hWinSrc); switch (Id) { case SYS_INFO_BUTTON_RETURN: _DeleteFrame(); _CreateFrame(&_cbSysSet); break; } } break; default: WM_DefaultProc(pMsg); } }
void update_do_settings() { DROPDOWN_Handle typeDOListBox = WM_GetDialogItem(rankDlgDOPg, ID_RANK_DO_TYPE); WM_SetFocus(typeDOListBox); if (_CHECK_BIT_UCHAR(doTypeOutputs, do_index) == 0) { DROPDOWN_SetSel(typeDOListBox, 0); } else { DROPDOWN_SetSel(typeDOListBox, 1); } }
void MainTask(void) { static GUI_PID_STATE OldState; GUI_PID_STATE CurrentState; int tEnd; GUI_Init(); BUTTON_SetReactOnLevel(); // // Check if recommended memory for the sample is available // if (GUI_ALLOC_GetNumFreeBytes() < RECOMMENDED_MEMORY) { GUI_ErrorOut("Not enough memory available."); return; } do { WM_HWIN hButton0, hButton1; WM_SetCallback(WM_HBKWIN, _cbBkWin); hButton0 = _CreateButton(100, 220, 170, 150, 5, 25, "Dashboard" , &bmDashboard , GUI_ID_BUTTON0); hButton1 = _CreateButton(370, 220, 170, 150, 5, 25, "Cash Terminal", &bmCashTerminal, GUI_ID_BUTTON1); WM_SetFocus(hButton0); tEnd = GUI_GetTime() + 4000; do { GUI_PID_GetState(&CurrentState); if ((OldState.x != CurrentState.x) || (OldState.y != CurrentState.y)) { tEnd = GUI_GetTime() + 10000; } OldState = CurrentState; GUI_Delay(100); if (GUI_GetTime() >= tEnd) { if (_AppSelectionOld) { _AppSelection = ((_AppSelectionOld - 1) ^ 1) + 1; } else { _AppSelection = APP_DASHBOARD; } } } while (!_AppSelection && !_Break); WM_DeleteWindow(hButton0); WM_DeleteWindow(hButton1); if (!_Break) { switch (_AppSelection) { case APP_DASHBOARD: AppDashBoard(); break; case APP_CASHTERMINAL: AppCashTerminal(); break; } GUI_CURSOR_Hide(); _AppSelectionOld = _AppSelection; _AppSelection = 0; } } while (!_Break); }
/** * @brief Explores disk. * @param hTree: tree view handle * @retval None */ static void ExploreDisks(WM_HWIN hTree) { TREEVIEW_ITEM_Handle hItem = 0; TREEVIEW_ITEM_Handle hUSBItem = 0; TREEVIEW_ITEM_Handle Node = 0; uint32_t Position = 0; Node = TREEVIEW_InsertItem(hTree, TREEVIEW_ITEM_TYPE_NODE, 0, 0, "Local disks"); if(k_StorageGetStatus(MSD_DISK_UNIT) == 1) { hItem = TREEVIEW_InsertItem(hTree, TREEVIEW_ITEM_TYPE_NODE, Node, TREEVIEW_INSERT_FIRST_CHILD, "microSD"); } if(k_StorageGetStatus(USB_DISK_UNIT) == 1) { Position = hItem ? TREEVIEW_INSERT_BELOW : TREEVIEW_INSERT_FIRST_CHILD; hUSBItem = hItem ? hItem : Node; hUSBItem = TREEVIEW_InsertItem(hTree, TREEVIEW_ITEM_TYPE_NODE, hUSBItem, Position, "USB Disk"); } if(k_StorageGetStatus(MSD_DISK_UNIT) == 1) { ShowNodeContent(hTree, hItem, mSDDISK_Drive, pFileList); } if(k_StorageGetStatus(USB_DISK_UNIT) == 1) { ShowNodeContent(hTree, hUSBItem, USBDISK_Drive, pFileList); } TREEVIEW_SetAutoScrollH(hTree, 1); TREEVIEW_SetAutoScrollV(hTree, 1); TREEVIEW_SetIndent(hTree, 22); hItem = TREEVIEW_GetItem(hTree, 0, TREEVIEW_GET_FIRST); TREEVIEW_ITEM_Expand(hItem); hItem = TREEVIEW_GetItem(hTree, hItem, TREEVIEW_GET_FIRST_CHILD); if(hItem != 0) { TREEVIEW_ITEM_Expand(hItem); hItem = TREEVIEW_GetItem(hTree, hItem, TREEVIEW_GET_NEXT_SIBLING); if(hItem != 0) { TREEVIEW_ITEM_Expand(hItem); } } WM_SetFocus(hTree); }
/********************************************************************* * * GUIDEMO_DemoFrameWin */ void GUIDEMO_DemoFrameWin(void) { FRAMEWIN_Handle hFrame; LISTBOX_Handle hListBox; int xSize = LCD_GetXSize(); int ySize = LCD_GetYSize(); int i, x, y, w, h; const GUI_FONT* pFont = &GUI_FontComic18B_1; GUI_COLOR DesktopColorOld; #if GUIDEMO_LARGE GUIDEMO_ShowIntro("Frame Window & Listbox", NULL); #else GUIDEMO_ShowIntro("Frame Window\n & Listbox", NULL); #endif DesktopColorOld = GUIDEMO_SetBkColor(GUI_RED); DesktopColorOld = WM_SetDesktopColor(DesktopColorOld); /* Automatically update desktop window */ x = BORDER; #if GUIDEMO_LARGE y = 75; #else y = BORDER; #endif w = xSize - x - BORDER; h = ySize - y - BORDER; if (w > 140) { w = 140; } if (h > 120) { h = 120; } hFrame = FRAMEWIN_Create("Select language", NULL, WM_CF_SHOW, x, y, w, h); FRAMEWIN_SetActive(hFrame, 1); FRAMEWIN_SetMoveable(hFrame, 1); FRAMEWIN_AddMaxButton(hFrame, FRAMEWIN_BUTTON_RIGHT, 0); FRAMEWIN_AddMinButton(hFrame, FRAMEWIN_BUTTON_RIGHT, 1); FRAMEWIN_SetFont(hFrame, &GUI_Font13_ASCII); hListBox = LISTBOX_CreateAsChild(_asLang, WM_GetClientWindow(hFrame), 0, 0, 0, 0, WM_CF_SHOW | WM_SF_ANCHOR_LEFT | WM_SF_ANCHOR_TOP | WM_SF_ANCHOR_RIGHT | WM_SF_ANCHOR_BOTTOM); WM_SetFocus(hListBox); LISTBOX_SetFont(hListBox, pFont); GUIDEMO_Wait(); for (i = 0; (i < 10) && !GUIDEMO_CheckCancel(); i++) { LISTBOX_IncSel(hListBox); GUIDEMO_Delay(250); } for (i = 0; (i < 10) && !GUIDEMO_CheckCancel(); i++) { LISTBOX_DecSel(hListBox); GUIDEMO_Delay(250); } GUIDEMO_Delay(500); LISTBOX_Delete(hListBox); FRAMEWIN_Delete(hFrame); WM_SetDesktopColor(DesktopColorOld); }
/********************************************************************* * * _HandleSetValue */ static void _HandleSetValue(RADIO_Handle hObj, RADIO_Obj* pObj, int v) { if (v < 0) { WM_HWIN hWin = _GetPrevInGroup(hObj, pObj->GroupId); if (hWin) { WM_SetFocus(hWin); _SetValue(hWin, 0x7FFF); RADIO__SetValue(hObj, pObj, -1); } } else if (v >= pObj->NumItems) { WM_HWIN hWin = _GetNextInGroup(pObj->Widget.Win.hNext, pObj->GroupId); if (hWin) { WM_SetFocus(hWin); _SetValue(hWin, 0); RADIO__SetValue(hObj, pObj, -1); } } else { if (pObj->Sel != v) { _ClearSelection(hObj, pObj->GroupId); RADIO__SetValue(hObj, pObj, v); } } }
void FRQ_SetFocus(void) { if(g_hWin_ReadMeter > 0) { WM_SetFocus(g_hWin_ReadMeter); RMD_SetFocus(); } else if(g_hWin_ProtoDbg > 0) { WM_SetFocus(g_hWin_ProtoDbg); CPT_SetFocus(); } else if((g_hWin_para > 0)&&(g_hWin_AdvanSet < 0)) { WM_SetFocus(g_hWin_para); } else if(g_hWin_AdvanSet > 0) { WM_SetFocus(g_hWin_AdvanSet); ADS_SetFocus(); } }