// /// Refresh the window. // void TCheckList::Update() { int topIndex = GetTopIndex(); int selIndex = GetSelIndex(); SendMessage(WM_SETREDRAW, false); Invalidate(); SetTopIndex(topIndex); if (selIndex != LB_ERR) SetSelIndex(selIndex); SendMessage(WM_SETREDRAW, true); }
// Update data void CLTGUICycleCtrl::UpdateData (LTBOOL bSaveAndValidate) { if (!m_pnValue) { return; } if (bSaveAndValidate) { *m_pnValue=GetSelIndex(); } else { SetSelIndex(*m_pnValue); } }
//----------------------------------------------------------------------------- uint TCheckList::Transfer(void* buffer, TTransferDirection direction) { long style = GetStyle(); TCheckListData* checkListData = (TCheckListData*)buffer; if (direction == tdGetData){ // First, clear out Strings array and fill with contents of list box // checkListData->Clear(false); int count = GetCount(); for(int i =0; i < count; i++) checkListData->AddItem(GetItem(i)); // Update transfer data with new selected item(s) // checkListData->ResetSelections(); if (!(style & MULTIPLESEL)) { // Single selection // checkListData->Select(GetSelIndex()); } else { // Multiple selection // int selCount = GetSelCount(); if (selCount > 0) { TAPointer<int> selections(new int[selCount]); GetSelIndexes(selections, selCount); // Select each item by index // for (int selIndex = 0; selIndex < selCount; selIndex++) checkListData->Select(selections[selIndex]); } } } else if (direction == tdSetData){ ClearList(); // Add each string, item data and selections in listBoxData to list box // const int noSelection = -1; uint selCount = checkListData->GetSelCount(); // for multi selection int selIndex = noSelection; // for single selection for (uint i = 0; i < checkListData->ItemCount(); i++){ // Index may be different from i when the listbox is sorted. // int index = AddString((LPCTSTR)checkListData->GetItem(i)); if (style & MULTIPLESEL) { for (uint j = 0; j < selCount; j++) if (checkListData->GetSelIndices()[j] == (int)i) { SetSel(index, true); break; } } else { if (selCount && (uint)checkListData->GetSelIndices()[0] == i) selIndex = index; else // Inserted something before item and the item to select has been // pushed further down in the list. // if (selIndex != noSelection && index <= selIndex) selIndex++; } } if (selIndex != noSelection && !(style & MULTIPLESEL)) SetSelIndex(selIndex); } return sizeof(TCheckListData); }