CTestView(View类窗口)和CMainFrame(框架类窗口)都是窗口类,View类窗口是覆盖在框架类窗口之上的。
VC++中有一个文档视类结构,文档类就是CTestDoc类,视图类就是CTestView类;要把数据和数据显示分离开来,那么数据的存储加载都由CTestDoc(文档类)完成,数据的显示修改都由CTestView(视类)类来完成。
在CTestApp类的函数InitInstance()中:
pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CTest3Doc), RUNTIME_CLASS(CMainFrame), // main SDI frame window RUNTIME_CLASS(CTest3View)); AddDocTemplate(pDocTemplate); }将文档类、应用程序框架类、视类加载在文档模版当中(就是单文档)。
CAboutDlg类表示对话框类,这个类可有可无。
在函数之前加两个冒号,并且冒号之前什么都没有表示平台SDK函数,是全局函数。
如果你在类中的调用平台SDK函数,并且类中的函数名与调用的平台SDK函数不一致,就不需要在函数的开头写上两个冒号,编译器会认为你调用的是平台SDK函数。
C++对象的生命周期和窗口的生命周期不是一致的,当一个窗口销毁的时候,跟C++对象没有任何关系,它们之间唯一联系的纽带仅仅是在C++类内部有一个成员变量,是一个句柄的成员变量,保存了与它相关的窗口的句柄。C++对象析构的时候我们也要把窗口给析构掉。
框架类CMainFrame是CTestView类的父窗口;
Mfc消息处理是根据消息映射来完成的。