2024年4月2日发(作者:)
将 MFC 应用程序移植到 Linux
循序渐进使用 wxWindows 的指南
Markus Neifer (howlingmad@), 软件开发人员
简介: 将 Windows 应用程序移植到 Linux 不必涉及再培训的痛苦经历。
Markus Neifer 演示了如何使用 wxWindows 移植 MFC,指导读者使用
wxWindows 这一开放源码工具箱,并循序渐进地向读者介绍了一个完整的移植
示例。
您可能仍然在维护用微软基础类库(Microsoft Foundation Classes(MFC))
构建的旧的 Windows 应用程序,而现在却有客户要求 Linux 版本,该怎么办
呢?在您的团队中可能有技术熟练的 MFC 开发人员,但如何达到加速 Linux
开发呢?别急;本文就是针对您这种情况而写的。依靠 wxWindows(一种用于
C++ 和 Python 的可移植 GUI 工具箱)的帮助,我将以多文档界面(Multiple
Document Interface (MDI))文本编辑器为例向您演示如何将仅 Windows 的
MFC 应用程序移植到 Linux。类似这样的小型应用程序有助于我们将讨论集中
在移植框架的具体细节上,从而避免我们迷失在代码的汪洋中。可以在本文后面
的 参考资料一节中获取完整的 MFC 应用程序和 wxWindows 应用程序的源
代码。
文档/视图概述
我将演示的应用程序使用众所周知的文档/视图体系结构,因为它可以象大多数
应用程序一样处理文档。即使您的应用程序不使用文档/视图体系结构,我也建
议您读下去。只要您已在转向这种框架,您就可能想要添加这项功能。
在我的关于 wxWindows 的 前一篇文章中,曾经指出过 MFC 和 wxWindows
之间具有某些相似性。字符串类
CString
、
wxString
和事件系统之间都非常相似。
但还不止这些相似性。wxWindows 工具箱还提供对文档/视图体系结构的类
MFC 支持。
我将从核心类的比较开始。下表列出了两种框架的文档/视图体系结构所涉及的
类。
表 1. 文档/视图类比较
类
文档(Document)
视图(View)
编辑视图(Edit view)
模板类(Template class)
MDI 父框架(MDI parent frame)
MDI 子框架(MDI child frame)
文档管理器(Document manager)
MFC 类
CDocument
CView
CEditView
CMultiDocTemplate
CMDIFrameWnd
CMDIChildWnd
n/a
wxWindows 类
wxDocument
wxView
n/a
wxDocTemplate
wxDocMDIParentFrame
wxDocMDIChildFrame
wxDocManager
除编辑视图类以外,每个 MFC 类都有其对应的 wxWindows 类。(最后一项
中 MFC 的部分为空,因为 MFC 没有独立的文档管理器类。由应用程序类
CWinApp
内部处理文档。)下列 UML 图演示了这些类之间的关系:
图 1. MFC 类
发布评论