1、将一个工程的对话框及程序移动至另一 MFC 程序在程序移植的过程中,难免会遇到一个写好的 MFC 对话框程序要移植到大的平台上去,为了不用再次绘制窗体和控件,可以将待移植的程序的对话框等通过修改代码移动到另一程序中。以下的例子,待移植的程序工程名为:MultiThreadExampleDlg,里面有Dialog 对话框、 4 个 Button 和一个 Edit 控件。目标工程为:SDIExample,为一个空的单文档程序。现在要开始移植了,需要准备的文件为 Resource.h 和*.rc 文件1、 对于 SDIExample,先绘制出需要弹出对话框的菜单项,Caption 为“弹出” ,ID
2、 为 ID_DLG。2、 在 SDIExample 中新建一个 Dialog,名字和控件随便。3、 关闭 SDIExample 工程,随便用一个编辑器打开 SDIExample 下的resource.h、SDIExample.rc 文件和 MultiThreadExampleDlg 工程下的 resource.h、MultiThreadExampleDlg.rc 文件。4、 在打开*.rc 文件中分别找到对应于 Dialog ID 的部分,在 BEGIN和 END 之间的就是控件的定义和属性了。5、 把待移植的工程中 BEGIN 和 END 之间的内容以及 ID 号、类型、尺寸复制到目标工程中
3、,6、 保存,关闭。再分别打开两个工程的 resource.h 文件,把涉及到的控件 ID 的定义拷贝过去。7、 如果控件有设置初始值,如 COMBO BOX 的 DATA,那么把resource.h 文件的最末尾部分拷贝过去。保存,关闭,打开SDIExample 工程。打开资源视图,看到 Dialog 就可以了。8、 移植代码,在拷贝代码的时候可以把一开始那个工程的源文件和头文件全部拷贝或者包含,但是需要注意以下几个地方: 原来工程的*Dlg.cpp 文件中包含了 CAboutDlg 类,这个类在后来的工程中也有,需要把声明和定义部分删除。 原来工程的 C*App 类需要删除,因为程序启动是从 CWinApp类开始启动,在移植的工程中需要把之前工程的这个类删除。在这个类中写的函数需要重新写到目标工程的 C*App 类中。