经常要在一个对话框开始的时候初始化一些东东,感觉放在构造函数和initDialog中都可以。
有什么区别吗?

解决方案 »

  1.   

    当然有区别了,InitDialog 是响应WM_INITDIALOG消息的函数。
    构造函数,是当你对一个对象实例话的时候,调用的函数。
    在这里,构造函数早于InitDialog的调用。
      

  2.   

    构造函数   :对话框还不存在,使用hwnd之类的东西会不管用
    InitDialog :对话框以存在
      

  3.   

    一般来讲,初始化一些东东,放在构造函数和initDialog中都可以。
    但两者有区别,如:
    CxxDialog dlg;  //调用构造函数
    .....dlg.DoModal(); //调用了OnInitDialog()两者执行的时间是不一样的,
    你申明一个对话框后,不一定马上显示它,
    而且如果你初始话时需要分配很大的内存,
    那么放在OnInitDialog()会更合适。
      

  4.   

    感觉上差不多,但是不一样。
    构造函数是一个对象的初始化,是C++标准调用。没有窗口句柄。
    OnInitDialog是MFC类库封装的,有窗口句柄。
    如你初始化时申请不需要窗口的东东,两者都可。如果有窗口就只能在OnInitDialog
      

  5.   

    控件的初始化要放在OnInitDialog
    普通成员变量的初始化可以放在构造函数中