VC++中如何复制对话框资源

法1:

在你的工程中添加另一个工程的rc文件,这时资源视图中就会出现两个rc,从后加的rc中拷贝资源到你自己工程的rc中就可以了。

法2:vc中如何拷贝一个工程的对话框资源到另一个工程中?

这是一个很专业也很有用的问题。其实VC的设计者早就为我们考虑了这个问题。

在VC6环境下,选择Class视图,选中想要克隆的对话框所对应的类,例如CAboutDlg,点击鼠标右键,选择Add to
gallery。在新工程中选择Project菜单,选择Add Component and
ActivX,你会看到多了一个文件夹(与上一个工程同名),进入该文件夹,选择*.ogx。选择Insert,你会发现原来的对话框被加入到新的工程中了!

补充:

.net下更简单,将原来的工程加到新的工程中,直接将对话框拷贝过去就行了!

法3:

第一步:用记事本打开原工程的.rc文件,找到想复制的对话框的信息,如下所示

IDD_UGMS_DIALOGDIALOGEX 0, 0, 320, 230

STYLE WS_CHILD | WS_VISIBLE

EXSTYLE WS_EX_APPWINDOW

FONT 9, "宋体"

BEGIN

GROUPBOX      "学生信息",IDC_STATIC,10,8,290,200

GROUPBOX      "",IDC_STATIC,25,55,205,120

PUSHBUTTON   
"最前(&F)",IDC_BUTTON_FIRST,30,30,35,15

PUSHBUTTON   
"向前(&B)",IDC_BUTTON_PRE,82,30,35,15

PUSHBUTTON   
"向后(&N)",IDC_BUTTON_NEXT,134,30,35,15

PUSHBUTTON   
"最后(&L)",IDC_BUTTON_LAST,186,30,35,15

PUSHBUTTON   
"查询(&Q)",IDC_BUTTON_QUERY,246,70,40,15

PUSHBUTTON   
"增加(&A)",IDC_BUTTON_ADD,246,96,40,15

PUSHBUTTON   
"修改(&M)",IDC_BUTTON_MODIFY,246,122,40,15

PUSHBUTTON   
"删除(&D)",IDC_BUTTON_DELETE,246,148,40,15

PUSHBUTTON   
"确定(&O)",IDC_BUTTON_OK,58,183,40,15

PUSHBUTTON   
"取消(&C)",IDC_BUTTON_CANCEL,150,183,40,15

LTEXT         
"学号:",IDC_STATIC,52,75,25,8

LTEXT         
"姓名:",IDC_STATIC,52,100,25,8

LTEXT         
"性别:",IDC_STATIC,52,125,25,8

LTEXT         
"入学时间:",IDC_STATIC,44,151,41,8

EDITTEXT     
IDC_EDIT_SID,91,72,95,15,ES_AUTOHSCROLL

EDITTEXT     
IDC_EDIT_SNAME,91,96,95,15,ES_AUTOHSCROLL

EDITTEXT     
IDC_EDIT_SSEX,91,120,95,15,ES_AUTOHSCROLL

CONTROL       
"DateTimePicker1",IDC_DATETIMEPICKER_SCOMEDATE,

"SysDateTimePick32",DTS_RIGHTALIGN | WS_TABSTOP,91,144,

95,15

GROUPBOX      "",IDC_STATIC,25,19,205,35

END

上面代码中绿色背景代表的是要复制的对话框资源的ID,此段代码也就是.rc文件中记录的此对话框的信息,黄色背景中间的代码就是

相应对话框中添加的控件信息,只需将相应代码拷到新工程的相应.rc文件相应的ID对话框资源的BEGIN 和END之间即可;

第二步:打开原工程的FileView视图下的Header Files
下的resource.h文件,将其中相应ID的信息复制到新工程的resource.h中即可;

例如:

//复制的资源ID

#define IDC_BUTTON_FIRST             
1000

#define IDC_BUTTON_PRE             
  1001

#define IDC_BUTTON_NEXT             
1002

#define IDC_BUTTON_LAST             
1003

#define IDC_BUTTON_QUERY             
1004

#define IDC_BUTTON_ADD             
  1005

#define IDC_BUTTON_MODIFY             
1006

#define IDC_BUTTON_DELETE             
1007

#define IDC_BUTTON_OK             
  1008

#define IDC_BUTTON_CANCEL             
1009

#define IDC_EDIT_SID               
  1010

#define IDC_EDIT_SNAME             
  1011

#define IDC_EDIT_SSEX             
  1012

#define IDC_DATETIMEPICKER_SCOMEDATE    1013

第三步:记得不要遗漏啊,如有ID重复,可以更改一下即可!

法4:

今天碰到模块移植问题了,自己做的对话框类(继承于CDialog)要移植到目标工程中.在网上搜了几个帖子发现都说的很生涩.问了我们的技术总监之后总算解决这个问题了.

问题:把一个MFC SDI工程中的一个对话框资源和类拷贝到另一个MFC SDI中.

1.在VC6中打开老的工程,在工作区Resource标签页中选中Dialog文件夹下的资源文件(就是双击后会出现编辑窗口界面的那个东西),按Ctrl+C(Edit->Copy也一样).

2.关闭当前工程,注意不要关闭VC6,打开目标工程(File->OpenWorkspace),然后选中工作区的Resource标签页中的Dialog文件夹,然后按Ctrl+V(Edit->Paste也一样).好了,对话框拷贝过来了.

3.将对话框类的cpp h文件拷贝到目标工程中(不详细说了,往当前工程添加文件)

4.打开复制过来的类cpp和h文件,删除没用的头文件(老工程相关的),并且在.h文件中添加文件包含

#include "Resource.h"

第四步很关键,老工程中根本就没有这个文件包含,可是移植之后必须手动添加头文件包含.因为这个问题卡了10几分钟...

当你用资源ID时(通常资源编辑器编辑的资源ID都在resource.h中),如果没有包含CWinApp的派生类所在的头文件就会出错,你看一下它的头文件里,包含了这个文件,
而向导生成的类,它的实现文件都有包含CWinApp派生类所在的头文件的

然后在新工程中就可以使用这个类了,主要就是这个类的对话框中的资源复制头一次遇到.不敢独享,拿出来跟新手们一起学习.

于是,当有已经创建好的对话框资源要添加到新工程中时:

(1)右键单击新工程所在的解决方案添加“现有项目”把旧工程添加进来;

(2)切换到“资源视图”并在旧工程对话框资源上右键“复制”;

(3)在新工程对话框资源上右键“粘贴”;

(4)现在就可以为新对话框添加类了,顺便把旧工程的响应函数拷贝过来;

(5)切换回“解决方案资源管理器”,右键旧工程“移除”。

VC++中如何复制对话框资源

时间: 2024-10-07 04:50:28

VC++中如何复制对话框资源的相关文章

VC++中复制对话框资源 之较好方法之一

资源对话框的编写有时候较为麻烦,这里我成功实现了这个方法的可用性,具体如下: 碰到模块移植问题了,自己做的对话框类(继承于CDialog)要移植到目标工程中.在网上搜了几个帖子发现都说的很生涩. 问题:把一个MFC SDI工程中的一个对话框资源和类拷贝到另一个MFC SDI中. 1.在VC2012中打开老的工程,在工作区Resource标签页中选中Dialog文件夹下的资源文件(就是双击后会出现编辑窗口界面的那个东西),按Ctrl+C(Edit->Copy也一样). 2.关闭当前工程,注意不要关

在VC中创建两套资源解决中英文版本发布的问题

原文http://blog.csdn.net/ylforever/article/details/6745611 一.背景 当软件需要发布多个不同语言版本时,对资源编辑的菜单,按钮,对话框大小形状有不同的要求.比如同个单词用中文/英文描述字符长度差异较大,如果这个单词 用作按钮的标题,对按钮的大小要求就不一样.这时可以有两种解决方法:1.通过代码动态调整按钮的大小,较麻烦,也破坏了VC资源编辑所见即所得规则. 2.准备两套资源,编译不同的版本用不同的资源.下面重点描述第二种处理方法的详细步骤.

VC++中用API调用对话框资源

关键技术: 对于资源的载入须要几个API函数,以下分别介绍这几个API函数. a) FindResource 用来在一个指定的模块中定位所指的资源,语法例如以下: HRSRC FindResource(HMODULE hModule, LPCRSTR lpName, LPCTSTR lpType); 參数说明: (1)hModule: 包括所须要的资料的模块句柄.假设是程序本身,则能够设置为NULL; (2)lpName: 能够使资源名称或者资源ID. (3)lpType:资源类型.在这里也就是

Windows开发进阶之VC++中如何实现对话框的界面重绘

技术:Windows 系统+Visual studio 2008 概述 应用程序界面是用户与应用程序之间的交互的桥梁和媒介,用户界面是应用程序中最重要的组成部分,也是最为直观的视觉体现.对用户而言,界面就是应用程序,界面设计的好坏,会直接影响应用程序的可用性,从而影响用户的体验. 在软件开发过程中,对界面的设计椅子都是一项很重要的技术,如今的应用软件界面可谓是“丰富多彩.美丽绝伦”,如大家熟悉的360安全卫士.腾讯QQ聊天软件.Visual C++ 编程词典软件等,都是非常不同于普通的对话框应用

mfc 在VC的两个对话框类中传递参数的三种方法

弄了好久,今天终于把在VC中的对话框类之间传递参数的问题解决了,很开心,记录如下: 1. 我所建立的工程是一个基于MFC对话框的应用程序,一共有三个对话框,第一个对话框为主对话框,所对应的类为CTMDDDlg类.在主对话框上我放置了一个标签页(Tab Control)控件,其实现的功能是当单击标签提示A时进入页面A,即对话框A(所对应的类为CDialogChild1),单击B时进入对话框B(CDialogChild2). 整个工程的框架已经设计好了,在对话框A和对话框B上放置了许多控件,现在我想

vc中改变对话框的背景色

---- 笔者曾在<软件报>2000年第5期中讨论过如何改变控件的颜色,但还有相当一部分的读者来信提问:一个基于对话框的MFC AppWizard应用程序中,如何改变对话框的背景颜色呢?对于这个问题,其实可以由几种不同的方法来实现,具体如下(粗斜体代码为增添的): ---- 方法一:调用CWinApp类的成员函数SetDialogBkColor来实现. ---- 其中函数的第一个参数指定了背景颜色,第二个参数指定了文本颜色.下面的例子是将应用程序对话框设置为蓝色背景和红色文本,步骤如下: --

VC++ 使用WebBrowser控件中html文件以资源形式加载

1 . . . . 2 3 //加载资源文件中的HTML,IDR_HTML1就是HTML文件在资源文件中的ID 4 wchar_t self_path[MAX_PATH] = { 0 }; 5 GetModuleFileName(NULL, self_path, MAX_PATH); 6 CString res_url; 7 res_url.Format(L"res://%s/%d", self_path, IDR_HTML1); 8 m_webbrowser.Navigate(res

Windows中7种定时器(VC定时器种类及占用资源对比)

VC中提供了很多关于时间操作的函数,利用它们控制程序能够精确地完成定时和计时操作.本文详细介绍了VC中基于Windows的精确定时的七种方式,如下图所示: 图一 图像描述 方式一:VC中的WM_TIMER消息映射能进行简单的时间控制.首先调用函数SetTimer()设置定时间隔,如SetTimer(0,200,NULL)即为设置200ms的时间间隔.然后在应用程序中增加定时响应函数OnTimer(),并在该函数中添加响应的处理语句,用来完成到达定时时间的操作.这种定时方法非常简单,可以实现一定的

VC中利用多线程技术实现线程之间的通信

文章来源:[url]http://www.programfan.com/article/showarticle.asp?id=2951[/url] 当前流行的Windows操作系统能同时运行几个程序(独立运行的程序又称之为进程),对于同一个程序,它又可以分成若干个独立的执行流,我们称之为线程,线程提供了多任务处理的能力.用进程和线程的观点来研究软件是当今普遍采用的方法,进程和线程的概念的出现,对提高软件的并行性有着重要的意义.现在的大型应用软件无一不是多线程多任务处理,单线程的软件是不可想象的.