/** * Function name CObjPropDeclBase::OnAddMember * Description handler for the add member button * @return - * @exception - * @see - */ void CObjPropDeclBase::OnAddMember() { CString strName = _T(""); CString strAlias = _T(""); CString strComment = _T(""); CString strType = _T(""); CString strInitVal = _T(""); CString strSclass = _T(""); int iCount = 0; //OH CString sIndex = _T("-1"); CString sRange = _T("-1"); CString sHint = _T("No"); CArray<CString, CString>* pDataArray; pDataArray = new CArray<CString, CString>; pDataArray->Add(sIndex); pDataArray->Add(sRange); pDataArray->Add(sHint); // CModifyFbMember aFbMember(m_pszSClasses); aFbMember.SetParent(this); switch(aFbMember.DoModal()) { case IDOK: aFbMember.GetMemberDecl(strName, strAlias, strComment, strType, strInitVal, strSclass); if(strName.IsEmpty() || strType.IsEmpty()) { break; } CheckStringValue(strInitVal, strType, TRUE); iCount = m_FbMembers.GetItemCount(); m_FbMembers.InsertItem(iCount, strSclass); m_FbMembers.SetItemText(iCount, m_aiCol[COL_NAME], strName); m_FbMembers.SetItemText(iCount, m_aiCol[COL_ALIAS], strAlias); m_FbMembers.SetItemText(iCount, m_aiCol[COL_COMMENT], strComment); m_FbMembers.SetItemText(iCount, m_aiCol[COL_TYPE], strType); m_FbMembers.SetItemText(iCount, m_aiCol[COL_INITVAL], strInitVal); sHint = _T("Add"); pDataArray->SetAt(2, sHint); m_FbMembers.SetItemData(iCount, (DWORD)pDataArray); break; case IDCANCEL: break; default: ; } //select first Item if(m_FbMembers.GetItemCount() > 0) { BOOL bSelected = m_FbMembers.SetItemState(0, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED); } return; }
// [*] перемещает жест или элемент списка жестов element на родительский уровень parent void CIdentify::Move(int element, int parent) { switch(m_Gestures[element].m_GroupStatus) { case 0:// простой жест { printArray(m_Gestures,m_nGestures); CGesture gesture; gesture=m_Gestures[element]; TRACE(gesture.m_Description); m_Gestures.InsertAt(parent+1,gesture); printArray(m_Gestures,m_nGestures); if(parent>element) m_Gestures.RemoveAt(element); else m_Gestures.RemoveAt(element+1); printArray(m_Gestures,m_nGestures); // модифицируем тунель m_Tunnel.Move(element,1,parent+1); } break; case 1: // группа жестов { printArray(m_Gestures,m_nGestures); int level=0,count=0,i=element; do { switch(m_Gestures[i++].m_GroupStatus) { case 0: break; case 1: level++; break; case 2: level--; break; } count++; } while(level>0); CArray<CGesture> group; group.SetSize(count); for(i=0;i<count;i++) group.SetAt(i,m_Gestures[element+i]); printArray(group,count); m_Gestures.InsertAt(parent+1,&group); printArray(m_Gestures,m_nGestures); if(parent>element) m_Gestures.RemoveAt(element,count); else m_Gestures.RemoveAt(element+count,count); printArray(m_Gestures,m_nGestures); // модифицируем тунель m_Tunnel.Move(element,count,parent+1); } break; default: ASSERT(FALSE); } }
int CDlgBlockAnalysis::ComputeListData(int iCurTab) { TYPEANDBLOCK *pType = m_TypeAndBlock->m_ayBlockCalc.GetAt(iCurTab); CArray<BlockInfo*, BlockInfo*> *pBlock = &pType->ayBlock; BlockInfo *pCurBlock; ListDrowData *pListData = m_ayDrowData.GetAt(iCurTab); CArray<LineDrowData*, LineDrowData*> *pLine = &pListData->ayList; LineDrowData *pCurLine; CArray<double, double> ayDouble; CArray<CodeInfo*, CodeInfo*> *payStock; CArray<StockUserInfo*, StockUserInfo*> *payCalStock; CodeInfo *pStock; CString strStockCode; int iIend = pType->ayBlock.GetSize(); //相当在LIST表明表中有几行 int iJend = m_AryListColHandName.GetSize(); //相当于在LIST中有几列 int iZend; //当前行的股票数 int f, iFend = pType->ayCalcStock.GetSize(); //当前TAB的所有股票数 double iCheckNum = 0; //流通盘总数 int j; pListData->iDrowNum = iJend; ayDouble.SetSize(iJend - 1); for(int i = 0; i < iIend; i++) //列表中的行数,也就是当前类的板块数 { pCurLine = pLine->GetAt(i); pCurLine->ayLine.SetSize(iJend - 1); for(j = 0; j< iJend - 1; j++) { ayDouble.SetAt(j, 0); pCurLine->ayLine.SetAt(j, 0); } pCurBlock = pBlock->GetAt(i); iZend = pCurBlock->ayStockList.GetSize(); pCurLine->ayLine.SetAt(0, iZend); //股票数 payStock = &(pCurBlock->ayStockList); payCalStock = &(pType->ayCalcStock); iCheckNum = 0; for(int z = 0; z < iZend; z ++) //每一行中,股票的数量 { pStock = payStock->GetAt(z); strStockCode.Format("%s", pStock->m_cCode); //for(f = 0; f < iFend; f ++) //得到当前股票在当前TAB中的索引f //{ // pCalStock = payCalStock->GetAt(f); // if(strStockCode.Compare(pCalStock->m_ciStockCode.GetCode()) == 0) // break; //} TabStockSortData* pIndex = m_ayStockIndex.GetAt(iCurTab); f = GetStockIndex(pIndex, strStockCode); if(f == -1) //如果没有 continue; BlockCalcRet *pCalRet = pType->ayCalcRet.GetAt(f); BlockOtherData *pOtherRet = pType->ayOtherData.GetAt(f); if( pCalRet->ayValues.GetSize() <= 0 ) continue; for(j = 2; j < iJend; j++) //对每支股票进行list的列数次计算 { LISTCOLHANDNAME pHandCol = m_AryListColHandName.GetAt(j); if(pHandCol.iType == 1) //如果的加权平均 ayDouble[j - 1] += (double)(pCalRet->ayValues.GetAt(j -2)) * (double)(pOtherRet->m_dCapital); else //否则全部累加 ayDouble[j - 1] += (double)(pCalRet->ayValues.GetAt(j - 2)); } iCheckNum += pOtherRet->m_dCapital; } if(iZend == 0) continue; for(j = 2; j < iJend; j++) { LISTCOLHANDNAME pHandCol = m_AryListColHandName.GetAt(j); if(pHandCol.iType == 0) ayDouble[j - 1] /= iZend; else if(pHandCol.iType == 1) ayDouble[j - 1] /= iCheckNum; pCurLine->ayLine.SetAt(j - 1, ayDouble[j - 1]); } int iTransmited = 100 + i * 100 / iIend; ::SendMessage(g_hParentWnd, HX_USER_COMPILEDATA, 13, (LPARAM)iTransmited); } ::SendMessage(g_hParentWnd, HX_USER_COMPILEDATA, 14, 0); return 0; }