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();
	}
}