/********************************************************************* * * LISTBOX_CreateEx */ LISTBOX_Handle LISTBOX_CreateEx(int x0, int y0, int xsize, int ysize, WM_HWIN hParent, int WinFlags, int ExFlags, int Id, const GUI_ConstString* ppText) { LISTBOX_Handle hObj; GUI_USE_PARA(ExFlags); hObj = WM_CreateWindowAsChild(x0, y0, xsize, ysize, hParent, WinFlags, _LISTBOX_Callback, sizeof(LISTBOX_Obj) - sizeof(WM_Obj)); if (hObj) { LISTBOX_Obj* pObj; WM_LOCK(); pObj = LISTBOX_H2P(hObj); /* Init sub-classes */ GUI_ARRAY_CREATE(&pObj->ItemArray); /* init widget specific variables */ WIDGET__Init(&pObj->Widget, Id, WIDGET_STATE_FOCUSSABLE); pObj->Props = LISTBOX_DefaultProps; if (ppText) { /* init member variables */ /* Set non-zero attributes */ LISTBOX_SetText(hObj, ppText); } INIT_ID(pObj); LISTBOX_UpdateScrollers(hObj); WM_UNLOCK(); } return hObj; }
/********************************************************************* * * Dialog callback routine */ static void _cbCallback(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); 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; case WM_NOTIFICATION_SEL_CHANGED: /* Selection changed */ FRAMEWIN_SetText(hWin, "Dialog - sel changed"); break; default: FRAMEWIN_SetText(hWin, "Dialog - notification received"); } break; default: WM_DefaultProc(pMsg); } }
/********************************************************************* * * _cbCallback */ static void _cbCallback(WM_MESSAGE * pMsg) { int NCode, Id; WM_HWIN hEdit0, hEdit1, hEdit2, hEdit3, hListBox, hDropd0, hDropd1; 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); hDropd0 = WM_GetDialogItem(hWin, GUI_ID_DROPDOWN0); hDropd1 = WM_GetDialogItem(hWin, GUI_ID_DROPDOWN1); /* 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, 0xffffff); 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); DROPDOWN_AddString(hDropd0, "Item 0"); DROPDOWN_AddString(hDropd0, "Item 1"); DROPDOWN_AddString(hDropd0, "Item 2"); DROPDOWN_AddString(hDropd1, "Item 0"); DROPDOWN_AddString(hDropd1, "Item 1"); DROPDOWN_AddString(hDropd1, "Item 2"); DROPDOWN_AddString(hDropd1, "Item 3"); DROPDOWN_AddString(hDropd1, "Item 4"); 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); } }
/********************************************************************* * * _cbCallback */ static void _cbCallback(WM_MESSAGE * pMsg) { int NCode, Id; WM_HWIN hDlg, hListBox, hItem; hDlg = pMsg->hWin; hListBox = WM_GetDialogItem(hDlg, GUI_ID_MULTIEDIT0); switch (pMsg->MsgId) { case WM_INIT_DIALOG: LISTBOX_SetText(hListBox, _ListBox); LISTBOX_AddString(hListBox, "Français"); LISTBOX_AddString(hListBox, "Japanese"); LISTBOX_AddString(hListBox, "Italiano"); LISTBOX_AddString(hListBox, "Español"); LISTBOX_AddString(hListBox, "Greek"); LISTBOX_AddString(hListBox, "Hebrew"); LISTBOX_AddString(hListBox, "Dutch"); LISTBOX_AddString(hListBox, "Other language ..."); LISTBOX_SetScrollStepH(hListBox, 6); LISTBOX_SetAutoScrollH(hListBox, 1); LISTBOX_SetAutoScrollV(hListBox, 1); LISTBOX_SetOwnerDraw(hListBox, _OwnerDraw); hItem = WM_GetDialogItem(hDlg, GUI_ID_CHECK1); CHECKBOX_Check(hItem); break; case WM_KEY: switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key) { case GUI_KEY_ESCAPE: GUI_EndDialog(hDlg, 1); break; case GUI_KEY_ENTER: GUI_EndDialog(hDlg, 0); break; } break; case WM_TOUCH_CHILD: WM_SetFocus(hListBox); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */ NCode = pMsg->Data.v; /* Notification code */ hItem = WM_GetDialogItem(hDlg, Id); switch (NCode) { case WM_NOTIFICATION_SEL_CHANGED: LISTBOX_InvalidateItem(hListBox, LISTBOX_ALL_ITEMS); break; case WM_NOTIFICATION_RELEASED: /* React only if released */ switch (Id) { case GUI_ID_OK: GUI_EndDialog(hDlg, 0); break; case GUI_ID_CANCEL: GUI_EndDialog(hDlg, 1); break; case GUI_ID_CHECK0: _MultiSel ^= 1; LISTBOX_SetMulti(hListBox, _MultiSel); WM_SetFocus(hListBox); LISTBOX_InvalidateItem(hListBox, LISTBOX_ALL_ITEMS); break; case GUI_ID_CHECK1: _OwnerDrawn ^= 1; if (_OwnerDrawn) { LISTBOX_SetOwnerDraw(hListBox, _OwnerDraw); } else { LISTBOX_SetOwnerDraw(hListBox, NULL); } LISTBOX_InvalidateItem(hListBox, LISTBOX_ALL_ITEMS); break; } break; } break; default: WM_DefaultProc(pMsg); } }
/********************************************************************* * * _cbCallback */ static void _cbCallback(WM_MESSAGE * pMsg) { WM_HWIN hWin = pMsg->hWin; #if GUIDEMO_LARGE int NCode, Id; #endif switch (pMsg->MsgId) { case WM_INIT_DIALOG: /* Initialize all widgets */ #if GUIDEMO_TINY EDIT_SetText(WM_GetDialogItem(hWin, GUI_ID_EDIT0), "EDIT"); #else EDIT_SetText(WM_GetDialogItem(hWin, GUI_ID_EDIT0), "EDIT widget 0"); EDIT_SetText(WM_GetDialogItem(hWin, GUI_ID_EDIT1), "EDIT widget 1"); #endif { #if GUIDEMO_LARGE WM_HWIN hListBox; EDIT_SetHexMode(WM_GetDialogItem(hWin, GUI_ID_EDIT2), 0x1234, 0, 0xffffff); EDIT_SetBinMode(WM_GetDialogItem(hWin, GUI_ID_EDIT3), 0x1234, 0, 0xffff); hListBox = WM_GetDialogItem(hWin, GUI_ID_LISTBOX0); LISTBOX_SetText(hListBox, _apListBox); SCROLLBAR_CreateAttached(hListBox, SCROLLBAR_CF_VERTICAL); #else GUI_RECT Rect; int x, y, ySize; ySize = LCD_GetYSize(); if (ySize < 120) { WM_ResizeWindow(hWin, 0, -24); } WM_GetWindowRectEx(hWin, &Rect); x = (LCD_GetXSize() - (Rect.x1 - Rect.x0 + 1)) >> 1; y = (ySize - (Rect.y1 - Rect.y0 + 1)) >> 1; #if GUIDEMO_TINY WM_MoveTo(hWin, x, y); #else WM_MoveTo(hWin, x, y - 4); #endif #endif } 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; #if GUIDEMO_LARGE 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; case WM_NOTIFICATION_SEL_CHANGED: /* Selection changed */ FRAMEWIN_SetText(hWin, "Dialog - sel changed"); break; default: FRAMEWIN_SetText(hWin, "Dialog - notification received"); } break; #endif default: WM_DefaultProc(pMsg); } }