【发布时间】:2012-02-24 20:09:51
【问题描述】:
我有一个 MFC SDI 应用程序,我想从一个单独的对话框访问文档区域,以便在其上绘制一些东西。这是我想要访问的内容:
void CProjView::OnDraw(CDC* pDC)
或者更好的是,我想直接从对话框中绘制文档视图。我该怎么做?
【问题讨论】:
我有一个 MFC SDI 应用程序,我想从一个单独的对话框访问文档区域,以便在其上绘制一些东西。这是我想要访问的内容:
void CProjView::OnDraw(CDC* pDC)
或者更好的是,我想直接从对话框中绘制文档视图。我该怎么做?
【问题讨论】:
如果您想在文档中绘制一些东西,那么它可能应该在您的文档中。获取指向 CDocument 类的指针并调用 CDocument::UpdateAllViews。它反过来会调用CView::OnUpdate。您将在那里设置一个标志并调用Invalidate()。 OnDraw() 现在将使用新对象重绘屏幕,因为您设置了指示它这样做的标志。
还有其他方法可以获取客户区的设备上下文并开始绘制,但问题是如果您最小化窗口并将其恢复回来,新的绘制将会丢失。事实上,您在 OnDraw() 函数之外所做的任何事情都会丢失。因此,您必须在 OnDraw() 函数中进行所有绘图,以上是如何使用 doc/view 架构系统地进行绘图。
【讨论】: