假如有一个对话框类的对象m_dlg,运行m_dlg.DoModal(),此时m_dlg中和控件绑定的变量都被赋值了,为什么调用DoModal()的时候不需要UpdateData(FALSE) ;将相关的数据显示到控件上?而它的数据自动的显示的到控件上了。

解决方案 »

  1.   

    updateData(false)initialize data in a dialog box初始化对话框domodal :Call this member function to invoke the modal dialog box 等于 初始化 
      

  2.   

    调用DoModal()就初始化了对话框了?
      

  3.   

    需要调用updateData(false)才会更新到控件,一般在对话框的OnInitDialog()中调用
      

  4.   

    楼主可以断点调试并观察一下:
    m_dlg.DoModal()之后会执行对话框类的OnInitDialog()函数,在这个函数中完成窗口初始化显示。
    不过各个控件所绑定变量的赋值不是在OnInitDialog()中完成的,而是在m_dlg类的构造函数中实现的,构造函数的执行位于DoModal()之前。
      

  5.   

    发现不需要UpdateFalse就显示到控件上了。
      

  6.   

    当然,如果你是下面这种方式,你是不需要调用updateData(false)
    CTestDlg dlg;
    dlg.m_strName = "aaa";// m_strName是对话框一逻辑框控件所关联的变量
    dlg.DoModal();这种方式相当于你给变量一个初始值,当然不需要updateData(false)就能反应到控件。
      

  7.   

    各个控件所绑定变量的赋值不是在OnInitDialog()中完成的,而是在m_dlg类的构造函数中实现的