void CZarplataView::OnDraw(CDC* pDC) { CZarplataDoc* pDoc = GetDocument(); MyCollection* myColl = pDoc->myColl; ASSERT_VALID(pDoc); if (!pDoc) return; pDoc->table.Draw(pDC, myColl); pDoc->table.DrawCap(pDC); CBitmap* bitmap; if(myColl->isReverse) bitmap = tRed; else bitmap = tBlue; pDoc->table.drawTriangleSort(pDC, myColl, bitmap, tSort); if(myColl->GetLength() > 0) { CString summa; Person* p = myColl->getOnIndex(myColl->curMap, 1); summa = p->ToCString(myColl->getSumSalary()); pDoc->table.DrawDedicated(pDC); pDoc->table.DrawCellar(pDC, pDoc->table.sumCell, summa); } else curCell = 0; //pDC->Rectangle(0, 0, 1390, 300); // // TODO: добавьте здесь код отрисовки для собственных данных }
void CMyTable::Draw(CDC* pDC, MyCollection* coll) { //pDC->MoveTo(X, Y); int startX = X, startY = Y + cellHeight, finishX, finishY; CRect rect; CPen aPen; aPen.CreatePen(PS_SOLID, 1, RGB(150, 150, 150)); CPen* oldPen; oldPen = pDC->SelectObject(&aPen); coll->startPos = true; sumCell = 0; for(int i = 0; i < coll->GetLength(); i++) { Person* p = coll->getPerson(); if(p == NULL)break; sumCell++; finishY = startY + cellHeight; for(int j = 0; j < 5; j++) { if(j == 0) { finishX = startX + 340; rect.SetRect(startX, startY, finishX + 1, finishY + 1); pDC->Rectangle(&rect); rect.SetRect(startX + 20, startY, finishX + 20 + 1, finishY + 1); pDC->SetTextColor(RGB(20, 20, 20)); pDC->DrawTextW(p->getInitial(), &rect, DT_LEFT | DT_VCENTER | DT_SINGLELINE | DT_NOCLIP); //pDC->SelectObject(oldPen); } if(j == 1) { startX = finishX; finishX = startX + 145; rect.SetRect(startX, startY, finishX + 1, finishY + 1); pDC->Rectangle(&rect); CString str = p->ToCString(p->getSumHours()); pDC->DrawTextW(str, &rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE | DT_NOCLIP); } if(j == 2) { startX = finishX; finishX = startX + 145; rect.SetRect(startX, startY, finishX + 1, finishY + 1); pDC->Rectangle(&rect); CString str = p->ToCString(p->getTarif()); str = str + ' ' + 'p'; pDC->DrawTextW(str, &rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE | DT_NOCLIP); } if(j == 3) { startX = finishX; finishX = startX + 340; rect.SetRect(startX, startY, finishX + 1, finishY + 1); pDC->Rectangle(&rect); CString str = p->ToCString(p->getSalary()); str = str + ' ' + 'p'; pDC->DrawTextW(str, &rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE | DT_NOCLIP); } if(j == 4) { startX = finishX; finishX = startX + 340; rect.SetRect(startX, startY, finishX + 1, finishY + 1); pDC->Rectangle(&rect); CString str = p->ToCString(p->getId()); pDC->DrawTextW(str, &rect, DT_CENTER | DT_VCENTER | DT_SINGLELINE | DT_NOCLIP); } } startX = X; startY += cellHeight; } pDC->SelectObject(oldPen); }