当前位置: 首页 > 编程技术 > 正文

复制MFC对话框

     MFC提供了非常方便的绘制窗口方法,但是当需要将这个工程辛辛苦苦画的MFC对话框复制到另外一个工程时,为了解决我们的时间,可以把原工程已经画好的MFC对话框复制到新的工程下,但是,这里所谓的复制,不是指复制RC文件,因为这样的话,多半是不会成功的

第一步:

     新建一个Dialog,至于怎么新建一个Dialog,我想应该不是难事吧,只有新建了Dialog后,rc文件里面才有该对话框的描述,我们后面需要做的就是复制一些我们添加的描述信息

第二步:

   复制原工程目录下的RC文件中Dialog描述信息到新的工程的RC文件中:

///////////////////////////////////////////////////////////////////////////////// Dialog//

IDD_ShowPageSettingInfo DIALOGEX 0, 0, 307, 163
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Dialog
"FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON   "确定",IDOK,46,130,50,14
PUSHBUTTON      "取消",IDCANCEL,201,131,50,14
LTEXT           "LeftMargin:",IDC_STATIC,16,24,40,11
 LTEXT           "TopMargin:",IDC_STATIC,115,23,40,11
LTEXT           "RightMargin:",IDC_STATIC,206,24,40,11
LTEXT           "BottomMargin:",IDC_STATIC,15,58,40,11
LTEXT           "LinesPage:",IDC_STATIC,206,57,40,11
LTEXT           "PageHeight:",IDC_STATIC,17,95,40,11
LTEXT           "PageWidth:",IDC_STATIC,206,97,40,11
LTEXT           "CharsLine:",IDC_STATIC,115,60,40,11
LTEXT           "",IDC_STATIC_LeftMargin,64,22,30,11
LTEXT           "",IDC_STATIC_TopMargin,163,22,30,11
LTEXT           "",IDC_STATIC_BottomMargin,64,59,30,11
LTEXT           "",IDC_STATIC_CharsLine,163,59,30,11
LTEXT           "",IDC_STATIC_PageHeight,64,97,30,11
LTEXT           "",IDC_STATIC_PageWidth,249,97,30,11
LTEXT           "",IDC_STATIC__LinesPage,249,59,30,11
LTEXT           "",IDC_STATIC_RightMargin,249,22,30,11
END

     我们需要复制的就是BEGIN到END之间的内容,将它复制到新工程的Dialog描述(////Dialog 注释下面)的同样位置,覆盖原来的数据就可,特别注意,一定只能复制BEGIN到END之间的内容,其他的内容不要更改,除非你知道它的作用和用途

第三步:

复制原resource.h的相应控件的ID:

#define IDR_GETPAGEINFORMATION          106
#define IDB_BITMAP1                     201
#define IDC_STATIC_LeftMargin           201
#define IDB_BITMAP_ButtonIcon           202
#define IDC_STATIC_TopMargin            202
#define IDD_ShowPageSettingInfo         203
#define IDC_STATIC_RightMargin          203
#define IDC_STATIC_BottomMargin         204
#define IDC_STATIC_CharsLine            205
#define IDB_BITMAP2                     205
#define IDB_BITMAP_InserActiveX         205
#define IDC_STATIC_LinesPage            206
#define IDC_STATIC__LinesPage           208
#define IDC_STATIC_PageHeight           209

#define IDC_STATIC_PageWidth            210

    这里需要注意一点,一般在新建一个对话框的时候,Resource.h已经有了两个ID在100左右的宏定义,这个一定不要覆盖,同样 在复制源工程的resource.h时,也不要复制最前面的两行 如果出现了重复的ID的情况,修改为不同就行了,修改的方式可以向我这样依次增加

第四步:

    修改ID起始值,将新工程的resource.h下面的几个值修改大一点,避免以后在增加控件的时候,出现ID冲突:

//可以修改的值尽量大一点,只要能和原来的ID不冲突就行了,具体的值多大,视情况而定
#define _APS_NEXT_RESOURCE_VALUE        206
#define _APS_NEXT_CONTROL_VALUE         211  

    这样一来一个MFC对话框就复制成功了,复制MFC对话框的时候,特别要注意控件名称和ID的冲突的问题,



本文固定链接: http://kuaile.in/archives/1082 | 蒲公英的博客

该日志由 蒲公英 于2012年06月21日发表在 编程技术 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 复制MFC对话框 | 蒲公英的博客
关键字: ,

复制MFC对话框:等您坐沙发呢!

发表评论


You must enable javascript to see captcha here!

快捷键:Ctrl+Enter