/********************************************************************* * * LISTBOX_InsertString */ void LISTBOX_InsertString(LISTBOX_Handle hObj, const char* s, unsigned int Index) { if (hObj && s) { LISTBOX_Obj* pObj; unsigned int NumItems; WM_LOCK(); pObj = LISTBOX_H2P(hObj); NumItems = LISTBOX__GetNumItems(pObj); if (Index < NumItems) { WM_HMEM hItem; hItem = GUI_ARRAY_InsertItem(&pObj->ItemArray, Index, sizeof(LISTBOX_ITEM) + strlen(s)); if (hItem) { LISTBOX_ITEM* pItem = (LISTBOX_ITEM*)GUI_ALLOC_h2p(hItem); pItem->Status = 0; strcpy(pItem->acText, s); LISTBOX_InvalidateItem(hObj, Index); } } else { LISTBOX_AddString(hObj, s); } WM_UNLOCK(); } }
/********************************************************************* * * _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); } }