现在的位置: 首页 > 综合 > 正文

MFC学习日记二:MFC内部运行原理

2018年02月03日 ⁄ 综合 ⁄ 共 725字 ⁄ 字号 评论关闭

CTestViewView类窗口)和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++对象析构的时候我们也要把窗口给析构掉。

框架类CMainFrameCTestView类的父窗口;

Mfc消息处理是根据消息映射来完成的。







抱歉!评论已关闭.