关于 MFC 开发的一些问题?

Posted

技术标签:

【中文标题】关于 MFC 开发的一些问题?【英文标题】:some questions about MFC development? 【发布时间】:2009-08-03 14:55:57 【问题描述】:

如何在 MFC 中开发 UI? 你使用任何免费的库,还是通常从头开始开发? C++开发的软件里总是有这么多的DLL文件,它们是干什么用的?

MFC ActiveX 控件和 MFC DLL 有什么区别?

【问题讨论】:

【参考方案1】:

Visual Studio 2008 通过添加“功能包”来增强 MFC。这允许您创建带有功能区栏的 MS Office 2007 样式 GUI(以及其他)。

http://msdn.microsoft.com/en-us/library/bb982354.aspx

我使用 MFC 磨练了我的 C++ 牙齿,但我建议您改用 Qt - 它是一个更现代的框架,而且您可以获得跨平台支持(Linux、Mac 等)免费。恕我直言,MFC 几乎是一个死框架(Feature Pack 是购买的,实际上是 BCG 库的缩减版。)

http://www.bcgsoft.com/

如果您想坚持使用 MFC,还有另一个流行的 GUI 框架,由 CodeJock:

http://www.codejock.com/products/overview.asp?platform=mfc

【讨论】:

MFC 几乎没有死。事实上,MS 通过发布 VS2008 服务包积极支持它。 世界上有数百万行代码形式的大量 MFC 遗产,因此 MS 当然会支持它。但是,对于推动框架向前发展呢?我认为现在这种可能性不大。也许“死”太强大了,但恕我直言,它肯定是生命结束时的框架。【参考方案2】:

MFC(Microsoft Foundation/Frustration Class)是 Microsoft 为 C++ 开发人员提供框架的一种旧方法。在那些日子里,它是微软提供的唯一框架,所以这个方法很老了(我认为是 Win95)。

MFC 是一个由字符串、GUI、控件等组成的工具箱... CString, CWindow, CTreeControl, ...

此外,它还包含一个组件框架 (ActiveX) 和基于 Gui 的组件框架 可能包含工具箱所有部分的 ActivX 控件。

所有功能都托管在 mfc??.dll 中,其他 dll 已成为 Microsft 操作系统本身的一部分,并包含许多 Windows 的兼容性内容。 (包括 Word Excel 在内的大多数应用程序......都是使用 MFC 实现的)。

今天我不建议再开始使用 MFC。如果您必须关心 MFC,那么您注定要失败,但我建议您使用 MS 中较新的炒作之一,或者使用 Qt 或任何基于 Gui 的工具箱。

它们中的大多数都比 MFC 更现代。

【讨论】:

感谢您的建议,但我想尝试使用MFC,我认为它的性能更好,用户不需要安装.net框架或其他东西。 微软似乎仍然关心 MFC - msdn.microsoft.com/en-us/library/bb982451.aspx 微软在接下来的十年里仍然会关心 MFC。你不能杀了它。它是大多数 win 应用程序的基础。但是编写 MFC 应用程序仍然没有乐趣。即使有新的功能包。【参考方案3】:

Get yourself a good book 开头。如果你不介意花点钱,还有一些third parties controls。最后,codeproject 有数百个 MFC 示例。

【讨论】:

【参考方案4】:

学习MFC的标准书是this一本。

由于您没有列出困扰您的 DLL,因此我无法对它们发表评论。然而,在本机代码中,将常用函数分离为 DLL 是一种常见做法。

ActiveX 控件是一个 COM(组件对象模型)“块”功能,旨在通过多种语言进行访问。 COM 与 MFC 没有特定的联系,除了 MFC 可以像任何其他 MS 产品一样使用 COM 组件这一事实。

MFC DLL 有两种类型,扩展和常规。常规 DLL 与任何其他 DLL 一样。扩展 DLL 与 MFC 集成更紧密,只能与 MFC 应用程序一起使用,并且可以导出 MFC 类和函数。

【讨论】:

【参考方案5】:

如何在 MFC 中开发 UI?

MFC GUI 通常被定义为使用 Windows 资源编译器编译并使用 Visual Studio 中内置的 MFC 特定资源文件编辑器编辑的 Windows 资源文件。

但由于资源文件只是纯文本,它也可以在任何文本编辑器中手动创建和编辑。

MFC 和 MFC 有什么区别 ActiveX 控件和 MFC DLL ?

MFC 只不过是一组旨在包装现有 Windows 技术的 C++ 库类。

例如,MFC ActiveX 控件只不过是一个用 MFC 编写的 Windows ActiveX 控件,同样 MFC DLL 是一个 Windows DLL 用 MFC 编写。

我还建议您花一些时间来了解一下底层的 Win32 层。实际上,MFC 只是标准 Win32 之上的一个非常薄的层,因此任何有关 Win32 的知识总是能派上用场。

【讨论】:

以上是关于关于 MFC 开发的一些问题?的主要内容,如果未能解决你的问题,请参考以下文章

关于 MFC C++ 多态性

关于MFC一些简单案例中需要用到的知识

MFC网络聊天室工程开发中遇到的一些问题(希望大佬能指导一下,非常感谢!!)

如何使用dll方法将CLIPS与MFC(VS2012)集成?

MFC开发常用的一些函数

使用 MFC 实现队列的正确方法?