以前一直是SDK和VCL,刚接触MFC不久,对MFC的Document/View/frame框架认识的不是很透彻,
也看了一些MFC的源代码,但太多太庞大,短期内难以明白。
想问问各位MFC高手,我们知道,view和frameWnd都是窗体,view是没有边框的窗体,
那么MFC中的每一个主窗体实际上是镶嵌在一起的两个窗体吗(一个frame,一个view)?
还有,MDI的应用程序,每个MDIchild都有自己view,MDIframe是否也有自己的view呢?
也看了一些MFC的源代码,但太多太庞大,短期内难以明白。
想问问各位MFC高手,我们知道,view和frameWnd都是窗体,view是没有边框的窗体,
那么MFC中的每一个主窗体实际上是镶嵌在一起的两个窗体吗(一个frame,一个view)?
还有,MDI的应用程序,每个MDIchild都有自己view,MDIframe是否也有自己的view呢?
不过我又发现了一个问题:
我发现mainframe是中空的!因为如果我把view给缩小,或者干脆把view给closewindow,那么mainframe中间原来view占据的空间是不会被repaint的,你们可以做一下实验,只需要在theApp的InitInstance()末尾加入:((CFrameWnd*)m_pMainWnd)->GetActiveView()->CloseWindow()即可看到这种现象。
仔细想想这样也是合理的,但是,MFC是如何做到的呢?有明白这个细节的能指点指点吗?