我建立了一个对话框程序,有这么两个类CTestApp和CTestDlg,在这两个类中分别有系统自动生成的两个函数,他们是InitInstance()和OnInitDialog(),按我的理解,这两个函数都是用来对对话框或是其他的资源进行初始化的,那为什么要用两个呢,所有的初始化都写在一个里面,不用另一个函数了不行么。我看到有一些数据库的程序把连接过程写在了InitInstance里面,然后把数据集的读取过程写在OnInitDialog里面,我都在CTestDlg类的OnInitDialog函数里面不可以么?请兄弟们给指导一下哈

解决方案 »

  1.   

    MFC机制的问题, 一两句话还不太容易讲清楚
    找本书,再结合MFC的源代码看下吧
      

  2.   

    你知道MFC程序是怎么运行起来的吗?你的MFC程序里有一个应用程序全局变量CTestApp theApp是吧。看看以下调用堆栈你就找到了。
      CTSApp::InitInstance() 
      AfxWinMain()
             wWinMain()
      wWinMainCRTStartup()
      

  3.   

    MFC必不可少的只有一个类,CWinApp。他是隐含内存中运行的。
    InitInstance是其重要的成员函数,在Dlg编程中显示不出他的重要性,但文档视的窗体中就显示出来了。当然一般不需要的时候可以不管它,使用缺省,但它确实可在实例初始化时做很多事情。
    而OnInitDialog只是在对话框初始化时运行,只是对对话框初始化。一般不追求精细的程序中显示不出来。实际上他们分工是不同的。你处理的Dlg程序简单,当然可以在OnInitDialog初始化,以后你会理解他们的不同和区别。