如果我创建的mfc工程名是11,选择单文档,那么经过组建编译就有 5个类,即caboutdlg ,cmainframe,
cmy11app,cmy12doc,cmy12view。在cmy12app::initinstance()函数中有CMainFrame* pMainFrame = new CMainFrame;
只创建了cmainfrane 类,那么还有cmy12doc和cmy12view是在什么时候经过什么函数动态创建的?

解决方案 »

  1.   

    看MFC深入浅出,讲的比较清楚,或者自己调试跟进去看看
      

  2.   

    你说的问题,我也不是太清楚了。不过据我所知,单文档App类的initinstance()函数好像是没有CMainFrame* pMainFrame = new CMainFrame;这句的。(向导默认生成的代码),多文档才有。
      

  3.   

    http://download.csdn.net/source/2747738
      

  4.   

    CMainFrame* pMainFrame = new CMainFrame 这句是多文档才有!
    mfc深入浅出 中 是调用 IMPLENENT_DYNAMIC(CFramewnd,cwnd) 返回的是
    new cframewnd.在每个头文件中都有IMPLENENT_DYNAMIC(xxx,xxx)
    这个全局宏定义,如果都是通过 return new xxx 类,那么还调用 cmy11app和在多文档中CMainFrame* pMainFrame = new CMainFrame  有什么作业,且不是多余??我就是这搞不清楚!!谢谢各位的指教。
    小弟我再次谢谢大家给我帮助!!
      

  5.   


    这个流程自己慢慢单步是可以出来。 
    首先入口当然是app的instance了, 里面有CMainFrame的new, 但是, 你仔细看看就会发现后面还有LoadFrame, 以及OpenDocument。 呵呵。 这些东西就关联到了MainFrame和Doc, 然后在Doc里的OnOpenDocument函数应该就追踪到View了。
      

  6.   

    loadframe 调用的是cframewnd 类的create 函数 ,接着调用cwnd::createex函数,再接着调用cmainframe::precreatewindow 在窗口创建之前 就可用来修改窗口,7楼说:
    这些东西就关联到了MainFrame和Doc, 然后在Doc里的OnOpenDocument函数应该就追踪到View了。
    我好想追踪不到!呵呵。。谢谢