另外,最好的资料来源是什么?
任何特定的书或视频系列?
我知道这个问题太笼统,但答案可能会帮助我(或者正在挖掘MFC的任何人)
谢谢!
tl;dr:学习Win32 – 按顺序。
到目前为止,MFC最重要的先决条件是对Windows API(有时也称为Win32 API)的坚定理解。您还需要熟悉C的几个关键概念,并使用工具亲密接触。我提出的先决条件清单是:
>在Windows API开发中获得坚实的背景。
熟悉C的相关概念。
>了解工具。
以下是这些步骤的缺陷,其中包含附加信息的链接。
Windows API:
Windows API通过C接口公开所有服务。因此资源管理往往是繁琐的锅炉代码。并且在源代码中可见(有时在阅读代码时有一个难以置信的奖金)。 MFC在很大程度上是围绕Windows API的自动资源管理包装器(和实用程序库),隐藏了大部分的资源管理和类型转换。要流利的MFC,你必须明白它隐藏的东西。
要开始使用Windows API,所有您需要的是我将推荐theForger’s Win32 API Tutorial(forgey forgey的名声)的主要组件的快速下载。它涵盖消息处理,窗口控件,控件和GDI,并建立了坚实的基础。如果您想投入更多时间来探索Windows API,那么迄今为止最好的资源可能还是Charles Petzold的Programming Windows(不要与managed Petzold混淆)。 MSDN也是一个很好的资源,以获得概述以及特定领域的详细文档,如:
> Message Handling
> Windowing
> User Interaction
> Windows Controls
2.关键C概念:
MFC是用C来实现的。虽然它早于官方的C标准,你不会在那里找到太多有趣的生意。很少的模板代码,当然没有一个新的C 11功能。与基本的C概念的亲密关系将使您有很长的路要走。
如前所述,MFC在很大程度上是围绕Windows API的资源管理包装。通常,Windows API资源和MFC对象之间有直接映射(如HWND
:CWnd
或HDC
:CDC
)。如果您了解构造函数,析构函数和对象生命周期,那么您几乎都在该部门中设置。
当使用MFC的基于模板的容器(如CMap
)时,您将自然会暴露于模板。没有什么太涉及那里,只是非常基本的类型参数化来重用容器代码并启用类型安全的元素访问。 MFC容器介绍可以在这里找到:Collections。
异常在MFC中很少使用,主要是在访问文件或序列化数据时。你还应该知道如何写异常安全的代码;您将在非平凡应用程序中看到异常。概述可以在Exception Handling in MFC找到。
一个不是C的一部分但在整个MFC中广泛使用的一个区域是预处理器。不管你的MFC应用程序如何微不足道,都会有宏。您必须非常了解预处理器语法以及预处理器的运行方式。
工具:
虽然可以单独使用记事本编写MFC应用程序,但是这样做肯定不是很有效率。纯文本编辑器可能是学习平台的好主意,但是当遇到里程碑和截止日期时,您肯定会使用强大的IDE。
MFC几乎意味着使用Visual Studio,我会假设这是你正在使用的。如果您使用VS6或VS2010(或更高版本),您将可以访问MFC Class Wizard.这是您将经常使用的工具。要安全地操作它,你必须熟悉它为你生成的代码。玩弄它,检查生成的代码,并尝试构建它的心理模型。如果没有意义,你应该稍后回来。
MFC类向导几乎肯定会生成预处理器代码。它隐藏了大量复杂性,您需要了解才能安全使用。使用IDE浏览预处理器宏,尝试在您的头脑中展开它们,并查看您是否理解结果代码。如果解决宏调用困难,编译器会使用/P (Preprocess to a File)编译器选项为您输出预处理代码。
有时您必须查看或调试MFC源代码。为了使源代码可用于源浏览和调试器,您必须设置VC目录以包括以下内容(如果尚未存在):
$(VCInstallDir)atlmfc\src\mfc $(VCInstallDir)atlmfc\src\mfcm $(VCInstallDir)atlmfc\src\atl
根据IDE,这可以通过工具 – >选项:项目和解决方案 – > VC目录或项目设置的属性表。
寻求帮助:虽然MSDN是文档的最佳资源,但MFC部分的感觉就像是处于维护模式,并没有像Windows API文档那样受到重视。如果您发现MFC文档缺少查找相应的Windows API文档,例如CWnd::OnNcDestroy
与WM_NCDESTROY
.后者包含有关窗口收到此消息的有用信息。
学习MFC
学习MFC的综合资源是Jeff Prosise’Programming Windows with MFC.虽然它已经过时(1999年发布),但是今天的概念仍然有效。它概述了MFC的概念,并深入实施细节。如果您发现自己正在努力处理这本书为您生成的(预处理器)代码。
作为一个有价值的在线资源,MSDN提供了有关MFC开发任何方面的信息。主要概念包括:
> Message Handling and Mapping
> User Interface元素
完整的列表可以在Concepts找到。