void CPPageMessage::OnButtonAdd() { CMsgIDAttr odMsgDlg(mMsgAttributes); if (odMsgDlg.DoModal() == IDOK) { m_sNewItem.nCANID = odMsgDlg.m_nID; m_sNewItem.omCANIDName = odMsgDlg.m_omStrMsg; m_sNewItem.Colour = odMsgDlg.m_sColour; /* Addition of the new message attribute must be always successful because the validation is already done */ mMsgAttributes->nAddNewAttrib(m_sNewItem); if(m_pRGBColors == nullptr) { m_pRGBColors = (COLORREF*)malloc(sizeof(COLORREF)); } else { m_pRGBColors = (COLORREF*)realloc(m_pRGBColors, (m_odMsgList.GetItemCount()+1)* sizeof(COLORREF)); } nEnterMessageAttrib(m_sNewItem, m_odMsgList.GetItemCount()); } }
void CPPageMessage::OnButtonEdit() { int nCurrSel = m_odMsgList.GetNextItem(-1, LVNI_SELECTED); if (nCurrSel >= 0) { CMessageAttrib& ouMsg = CMessageAttrib::ouGetHandle(m_eBusType); CString omARow = m_odMsgList.GetItemText(nCurrSel, 0); UINT unMsgID; sscanf_s((LPCTSTR) omARow, "%X", &unMsgID); ouMsg.nGetAttrib(unMsgID, m_sNewItem); CMsgIDAttr odMsgDlg(m_eBusType); odMsgDlg.m_nID = m_sNewItem.nCANID; odMsgDlg.m_sColour = m_sNewItem.Colour; odMsgDlg.m_omStrMsg = m_sNewItem.omCANIDName; odMsgDlg.m_bForEdit = true; odMsgDlg.m_bDBMessage = m_bForDBMsg; odMsgDlg.m_nPreviousID = m_sNewItem.nCANID; if (odMsgDlg.DoModal() == IDOK) { m_sNewItem.omCANIDName = odMsgDlg.m_omStrMsg; m_sNewItem.nCANID = odMsgDlg.m_nID; m_sNewItem.Colour = odMsgDlg.m_sColour; if(odMsgDlg.m_nPreviousID == m_sNewItem.nCANID) //if ID is not changed then just modify the current one { ouMsg.nModifyAttrib(m_sNewItem); } else //if the ID has changed then first remove the structure with old ID and then save the new ID { int nResult = ouMsg.nRemoveAttrib(odMsgDlg.m_nPreviousID); if (nResult == 0) { ouMsg.nAddNewAttrib(m_sNewItem); } } m_odMsgList.DeleteItem(nCurrSel); nEnterMessageAttrib(m_sNewItem, nCurrSel); m_odMsgList.EnsureVisible(nCurrSel, FALSE); } } }
int CPPageMessage::nInitialiseMsgLCtrl(UINT unTotalDBMsgs, UINT* punDBMsgIDs) { int nMessagesAdded = 0; CMessageAttrib& ouMsg = CMessageAttrib::ouGetHandle(m_eBusType); SCanIDList* psList = nullptr; int nEntries = ouMsg.nGetTotalIDs(); if (nEntries > 0) { psList = new SCanIDList[nEntries]; } if (psList != nullptr) { ouMsg.nGetMsgAttribs(psList); int nLastItem = 0; m_pRGBColors = (COLORREF*)malloc(nEntries * sizeof(COLORREF)); for (int i = 0; i < nEntries; i++) { m_sNewItem = *(psList + i); BOOL bToEnter = !(bIsMsgIDPresent(punDBMsgIDs, unTotalDBMsgs, m_sNewItem.nCANID) ^ m_bForDBMsg); if (bToEnter) { nLastItem = nEnterMessageAttrib(m_sNewItem, nLastItem); nLastItem++; nMessagesAdded++; } } delete[] psList; psList = nullptr; } return nMessagesAdded; }