OnPrepareDC

应用程序框架将在调用OnDraw之前调用OnPrepareDC函数。

virtual  void  OnPrepareDC( CDC* pDC, CPrintInfo* pInfo = NULL );

说明:

1这个函数在CView中什么都不做,但是在CView的派生类(如CScrollView中,它们会adjust attributes of the device context),因此当我们在自己的类中重写该类时,应该首先调用父类的OnPrepareDC函数。

2:该函数会在OnDrawOnPrint调用之前被调用。

3:有三种情况我们会在自己的类中重写该函数:

1)     To adjust attributes of the device context as needed,即需要调整设备描述表中的属性,如设置映射模式、窗口范围、原点坐标等操作。

2)     在不知道要打印多少页的情况下重写该函数,在其中test for the end of the document while it is being printed. When there is no more of the document to be printed, set the m_bContinuePrinting member of the CPrintInfo structure to FALSE.

3)     向打印机发送转译码时会重写该函数。

要注意的是在重写该函数之前保证首先调用父类的OnPrepareDC函数。

提示:OnPrepareDCCView的一个虚函数,在处理WM_PAINT消息时,框架会在调用OnDraw消息处理函数之前调用OnPrepareDC函数。如果如果其他的消息处理函数也需要设置正确的映射模式的话,那么在这些函数中就必须包含对OnPrepareDC的调用,因为框架只会在调用OnPaintOnPrint(从而也就在OnDraw)之前调用OnPrepareDC函数。

例如:如果在OnLButtonDown函数中需要设置映射模式,那么可以如下操作:

在该函数中添加如下代码:

CClientDC dc(this);

OnPrepareDC(&dc);这样一来,就为该设备描述表设置好了映射模式。

总结:在OnPrepareDC函数中配置设备描述表比在OnDraw中要好,因为这样等于是把配置设备描述表的代码独立出来封装到了一个独立的函数中,便于实现代码重用。

你可能感兴趣的:(OnPrepareDC)