以前一直是SDK和VCL,刚接触MFC不久,对MFC的Document/View/frame框架认识的不是很透彻,
也看了一些MFC的源代码,但太多太庞大,短期内难以明白。
想问问各位MFC高手,我们知道,view和frameWnd都是窗体,view是没有边框的窗体,
那么MFC中的每一个主窗体实际上是镶嵌在一起的两个窗体吗(一个frame,一个view)?
还有,MDI的应用程序,每个MDIchild都有自己view,MDIframe是否也有自己的view呢?

解决方案 »

  1.   

    MFC中的View是和Document配合使用的,主要用于数据显示,而Document用于数据逻辑处理。MDIFrame一般不需要自己的View,因为Frame只是一个窗口框架。View中显示的数据由Document管理。
      

  2.   

    给你一篇蛮好的文章,可以去看看http://blog.csdn.net/coordinate/archive/2004/12/08/209276.aspx
      

  3.   

    单文档中view覆盖在frame的上面,边框除外~
      

  4.   

    谢谢各位,看了各位的意见,我又跟踪了几遍MFC源代码,大概轮廓上清楚了。
    不过我又发现了一个问题:
    我发现mainframe是中空的!因为如果我把view给缩小,或者干脆把view给closewindow,那么mainframe中间原来view占据的空间是不会被repaint的,你们可以做一下实验,只需要在theApp的InitInstance()末尾加入:((CFrameWnd*)m_pMainWnd)->GetActiveView()->CloseWindow()即可看到这种现象。
    仔细想想这样也是合理的,但是,MFC是如何做到的呢?有明白这个细节的能指点指点吗?