当前位置:编程学习 > VC++ >>

请问在vc中如何把一个工程的对话框资源复制到另一个里面???

请说的细致一些,本人初学者,谢谢。。。
追问:第二步复制.rc文件的时候,是只把dialog里面不相同的部分复制过去么?还是Menu 啊什么其他的也要复制??
还有,某书上也写过这个,是先把工程1添加到工程2里,然后在资源页面把1工程中的对话框拖到2里面,然后在删除工程1.然后把相应对话框的.h .cpp文件复制过来。我试了一下,编译是木有问题的,但是classwizard不可用了。。。。它灰了。。。。==!!!
答案:1、把要复制的对话框的头文件和实现文件(.h文件和.cpp文件)复制到新工程文件夹下,在新工程中选择Preject->Add To Project->Files,选中对话框的头文件和实现文件确定;
2、用记事本打开原工程的资源文件(.rc文件),找到对话框定义位置,把所有相关内容复制到新工程的.rc文件相应处,对话框在资源文件中的定义一般是以下形式的(以关于对话框为例):
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_ABOUTBOX DIALOG DISCARDABLE  0, 0, 235, 55
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "关于 TempCtrl"
FONT 9, "宋体"
BEGIN
    ICON            IDR_MAINFRAME,IDC_STATIC,11,17,20,20
    LTEXT           "TempCtrl 1.0 版",IDC_STATIC,40,10,119,8,SS_NOPREFIX
    LTEXT           "版权所有 (C) 2011",IDC_STATIC,40,25,119,8
    DEFPUSHBUTTON   "确定",IDOK,178,7,50,14,WS_GROUP
END
3、将新工程编译运行,会出现放多变量未定义错误,这是因为复制过来的对话框中有很多控件,它们的ID未定义。依次找到这些ID,打开resource.h,将之定义即可,一般是如下形式:
#define IDC_EDIT_TEMP1                  1023
#define IDC_BUTTON_START1          1024
#define IDC_COMBO_AI                      1025
其他:在resource.h文件和资源的.rc(扩展名为RC)的文件中找到该对话框的相关ID和所以控件ID,复制到新的resource.h文件和.rc文件中; 首先要生成一个*.ogx的文件。

   方法:打开包含有所要加的对话框资源的工程(别的工程)。
         在试图资源(ClassView)中鼠标右键点击所需的对话框的类(也可以是所需的类)
         这时,你会看到右键菜单中有个“Add to Gallery”的选项。

         选择这个选项,则*.ogx文件生成。
         生成的文件名会类似你的对话框的类名,只不过中间会多出的空格(这无关紧要)
         
         关键是此文件生成在什么地方!
         一般情况下是:
         C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Gallery
         \别的工程名  目录下

2010-8-5:今天在vc2003中想使用此方法,结果出现无法将文件.ogx插入到工具箱,没有被识别为com工具箱。而且在.net中也没有“Add to Gallery”选项,看来此方法只适用于vc6.0

2、接着就是Insert这个*.ogx的文件。
   也就是Insert这个对话框资源和这个对话框类

   打开所要加入的工程,选择
   Project->Add To Project->components and controls...
   这时打开的是一个对话框,默认的打开目录就是:
   C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Gallery
   在对话框中选择进入“别的工程名”的目录,你就会看到那个  *.ogx的文件,
   选择它,然后Insert.  最后关闭对话框。

   这时你就会看到那个对话框的类已经出现在你的工程中,
   再到资源ResourceView中的Dialog中看看吧,那个对话框的资源已经出现。 

上一个:那有vc++6。0视频教材呀?谢谢
下一个:Vc++程序,release执行结果和debug下的不同,dubug下得结果是正确的

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,