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

本文深入探讨了C++ MFC框架中文档视图类的使用,包括文档类、视图类、应用程序框架类及窗口生命周期的关系。详细解释了文档类与视图类在数据存储与显示分离的机制,以及如何通过文档模板加载这些组件。同时,介绍了关于对话框类的使用及其与SDK函数的交互,并强调了C++对象与窗口销毁之间的联系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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消息处理是根据消息映射来完成的。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值