void CFlowTreeView::OnFtdNewScreen() { CFEManDoc* pDoc = GetDocument(); Screen *pWorkScreen; CDC *pDC; pDC = GetDC(); pWorkScreen = pDoc->CreateScreen(pDC, &lastRightClick); pDoc->SelectScreenIcon(pWorkScreen); RegionUpdate(pWorkScreen->GetIconBounds()); pDoc->SetModifiedFlag(); }
void CFlowTreeView::DrawScreenIcons(CDC *pDC) { CPoint *pWorkPoint; CRect *pWorkRect; CSize *pWorkSize; char *pWorkName; Screen *pWorkScreen; CFEManDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // Create the pens we need to draw the screen icons in both thier selected and // non-selected forms. CPen normalPen(PS_SOLID, 1, RGB(0, 0, 0)); CPen selectedPen(PS_SOLID, 3, RGB(255, 0, 0)); pWorkScreen = pDoc->GetFirstScreen(); while(pWorkScreen) { pWorkPoint = pWorkScreen->GetIconPos(); pWorkRect = pWorkScreen->GetIconBounds(); pWorkSize = pWorkScreen->GetNameSize(); pWorkName = pWorkScreen->GetName(); // Check to see if the screen icon is selected. If it is, draw it with // a thicker border. if(pWorkScreen->GetScreenStatus() == Screen::SS_SELECTED) { pDC->SelectObject(selectedPen); } else { pDC->SelectObject(normalPen); } // Draw the bounds of the icon. pDC->Rectangle(pWorkRect->left, pWorkRect->top, pWorkRect->right, pWorkRect->bottom); // Draw the text in the icon. pDC->SetTextAlign(TA_CENTER | TA_TOP); pDC->TextOut(pWorkPoint->x + (pWorkSize->cx / 2), pWorkPoint->y, pWorkName, strlen(pWorkName)); pWorkScreen = (Screen *)pWorkScreen->GetNext(); } }
// Alex added this stuff... void CFlowTreeView::DrawScreenLinks(CDC *pDC) { Screen *pWorkScreen; ScreenLink *pWorkLink; CPoint *pSrc, *pDst; CFEManDoc* pDoc = GetDocument(); pWorkScreen = pDoc->GetFirstScreen(); while(pWorkScreen) { pWorkLink = pWorkScreen->GetFirstScreenLink(); CPen defPrevPen(PS_SOLID, 1, RGB(255, 0, 0)); CPen defNextPen(PS_SOLID, 1, RGB(0, 255, 0)); CPen defExtraPen(PS_SOLID, 1, RGB(0, 0, 0)); CPen defPrevPen_sel(PS_SOLID, 3, RGB(255, 0, 0)); CPen defNextPen_sel(PS_SOLID, 3, RGB(0, 255, 0)); CPen defExtraPen_sel(PS_SOLID, 3, RGB(0, 0, 0)); while(pWorkLink) { CRect *pRect; pRect = pWorkScreen->GetIconBounds(); switch(pWorkLink->GetType()) { case ScreenLink::SLT_DEFAULT_PREV: pSrc = pWorkLink->GetLinkSrc(); pDst = pWorkLink->GetLinkDst(); if(pWorkLink->GetStatus() == ScreenLink::SLS_SELECTED) pDC->SelectObject(defPrevPen_sel); else pDC->SelectObject(defPrevPen); pDC->MoveTo(*pSrc); pDC->LineTo(*pDst); pRect = pWorkLink->GetBounds(); pDC->Rectangle(pRect); break; case ScreenLink::SLT_DEFAULT_NEXT: pSrc = pWorkLink->GetLinkSrc(); pDst = pWorkLink->GetLinkDst(); if(pWorkLink->GetStatus() == ScreenLink::SLS_SELECTED) pDC->SelectObject(defNextPen_sel); else pDC->SelectObject(defNextPen); pDC->MoveTo(*pSrc); pDC->LineTo(*pDst); pRect = pWorkLink->GetBounds(); pDC->Rectangle(pRect); break; case ScreenLink::SLT_EXTRA: pSrc = pWorkLink->GetLinkSrc(); pDst = pWorkLink->GetLinkDst(); if(pWorkLink->GetStatus() == ScreenLink::SLS_SELECTED) pDC->SelectObject(defExtraPen_sel); else pDC->SelectObject(defExtraPen); pDC->MoveTo(*pSrc); pDC->LineTo(*pDst); pRect = pWorkLink->GetBounds(); pDC->Rectangle(pRect); break; } pWorkLink = (ScreenLink *)pWorkLink->GetNext(); } pWorkScreen = (Screen *)pWorkScreen->GetNext(); } }