现在的位置: 首页 > 综合 > 正文

视图中的构造函数、OnCreate和OnInitiaUpDate进行初始化的区别

2018年02月09日 ⁄ 综合 ⁄ 共 762字 ⁄ 字号 评论关闭

  构造函数:产生本类的对象,但是没有产生窗口;

  OnCreate函数:将产生窗口

  OnInitialUpDate:一般在这里对视图的显示做初始化;

  简单的说,OnCrate只是产生VIEW的基本结构和变量,在OnInialUpdate中,主要初始化视图中的控件等,对各个变量进行初始化操作。

  需要注意的是,在单文档的情况下,OnInitialUpDate会被调用多次。当应用程序被启动,或当用户从File菜单选择了New的时候,或当用户从File菜单选择了Open的时候,OnInitialUpDate虚函数都会被调用。CView基类中的OnInitialUpDate函数除了调用OnUpdate函数外没有做任何其他事情。如果在派生类中重载该函数一定要动用基类的OnInitialUpDate函数,或者调用派生类的OnUpdate函数。当应用程序启动时,框架调用视图类的OnCreate函数之后立即调用OnInitialUpDate函数。

  因此,需要仅当创建视图的窗口时,才执行任何初始化应在 OnCreate() 消息处理程序而不是在 OnInitialUpdate() 函数中。

   简单文档视图交互过程:

   程序启动: CMyDocument对象被创建-》CMyView对象被创建-》视图窗口被创建-》CMyView::OnCreate函数被调用(如果被映射)-》CMyDocument::OnNewDocument函数被调用-》
CMyView::OnInitialUpdate函数被调用-》视图对象被初始化-》视图窗口无效-》CMyView:OnDraw函数被调用
用户编辑数据: CMyView类中函数对CMyDocument数据成员进行更新
退出程序: CMyView对象被删除-》CMyDocument对象被删除

抱歉!评论已关闭.