vc从入门到精通章视图对象.pdf
视图对象的主要方法
视图的作用是显示文档中的数据,用户也可以通过视图修改文档中的数据。在视图CView中还封装了打印和打印预览功能,使打印
工作变得简单了。下面介绍视图对象的主要方法。
1DoPreparePrinting方法
该方法用于显示打印框,创建画布。语法格式如下:
BOOLDoPreparePrinting(CPrintInfo*pInfo);
说明:PInfo标识打印信息。如果进行打印或打印预览操作,返回值为非零,否则为零。
2GetDocument方法
该方法用于获取视图关联的文档对象。语法格式如下:
CDocument*GetDocument()const;
3OnDraw方法
该方法用于在视图上绘制数据。语法格式如下:
virtualvoidOnDraw(CDC*pDC)=0;
4OnBeginPrinting方法
该方法在打印或打印预览之前调用,用户可以改写该方法,以实现特殊的功能。语法格式如下:
virtualvoidOnBeginPrintinC*pDrintInfo*pInfo);
说明:pDC标识一个画布指针。pInfo包含了打印信息,用户可以在该方法中修改打印信息。
5OnEndPrinting方法
该方法在打印或打印预览结束后,由框架调用。用户可以改写该方法,以实现特殊的功能。通常情况下,在该方法中释放
OnBeginPrinting方法中分配的GDI资源。语法格式如下:
virtualvoidOnEndPrintinC*pDrintInfo*pInfo);
说明:pDC标识一个画布指针。pInfo包含了打印信息,用户可以在该方法中修改打印信息。
6OnEndPrintPreview方法
该方法在用户打印预览时由框架调用。用户可以改写该方法,在打印预览结束时实现其他功能。语法格式如下:
virtualvoidOnEndPrintPreview(CDC*pDrintInfo*pInfo,POINTpoint,CPreviewView*
pView);
说明:pDC标识设备指针。pInfo记录打印信息。point标识最后一页上的点。PView标识预览视图指针。
7OnPrepareDC方法
该方法在OnDraw方法或OnPrint方法被调用前,由框架调用。默认情况下,该方法没有实现任何功能,用户可以在派生类中改写该
方法,设置画布的属性。语法格式如下:
virtualvoidOnPrepareDC(CDC*pDrintInfo*pInfo=NULL);
pDC标识一个画布指针。pInfo标识打印信息。如果是由绘画导致调用该方法,则pInfo为NULL;如果是由打印或打印预览导致调用
该方法,则pInfo包含了打印信息。
8OnPrint方法
在打印或打印预览文档中的每一页时,由框架调用该方法。语法格式如下:
视图的初始化
前面经介绍,视图是通过调框架的CreateView方法创的当视图调用Create方法时,会通
过::CreateWindowEx方法,WM_Create消息,执行OnCreate事处理函数,将自身添加到
文档对象的图列表中那么视图在被创建时,是如何初始化的呢?
这要查看文档模板的OpenDocumentFile方法。OpenDocumentFile方法的结尾处调用了
InitialUpdateFrame方法初始化更新,而该方法接用了框架对象的InitialUpdateFrame方法
,在框架对象的InitialUpdateFrame方法中向所有视发送了WM_INITIALUPDATE消息
SendMessageToDescendants(WMINITIALUPDATE,0,0,TRUE,TRUE);
这样,视图对象将处理WMINITIALUPDATE消息,执行OnInitialUpdate方法,而该方法直接调
用OnUpdate方法更新数据。
voidCView::OnInitialUpdate()
{
OnUpdate(NULL,0,NULL);
}
voidCView::OnUpdate(CView*pSender,LPARAM/*lHint*/,