vc6工程之间,以及vc6和vc2010之间的对话框资源复制使用
vc6工程之间的对话框资源复制使用
一 打开新工程文件vc61, 从菜单 文件 --打开,找到旧的vc6工程文件夹下的资源文件
,比如 vc60.rc,打开它。这样新工程下,将有两个资源文件,新的vc61在左侧,旧的vc60在右侧文件浏览区域。
二 转到旧的“vc60.rc”页,
一)复制粘贴对话框
1 点选右侧旧的资源文件夹 vc60.rc中的Dialog展开它,点选其中需要的对话框,比如IDD_VC60_DIALOG,并按键(Ctrl+C)复制它。
2 点选左侧新的资源文件夹 vc61.rc中的Dialog,按键(Ctrl+V)粘贴对话框IDD_VC60_DIALOG 到此。
二) 将旧的文件添加到工程中
1从Windows资源管理器中,找到旧的对话框IDD_VC60_DIALOG对应的vc60.h头文件和vc60.cpp实现文件,复制它们到新工程所在的文件夹中
2 从菜单 Project -- AddTo Project-- Files...,从弹出的窗口"Insert Files intoProject"中,找到选择vc60.h和vc60.cpp文件,按“OK”按钮添加到工程中即可。
3 这样有可能造成类向导不正常,你可以删除项目文件夹下类向导文件 vc61.clw,再类向导时,选择 "Add All" --"OK" 加入全部文件即可。
三 上步骤二),也可以使用下面两个步骤的方式 实现
1 给对话框添加类(这步可以不做)
给工程添加一个对话框,比如也叫IDD_VC60_DIALOG,给其添加类,类名最好和旧的保持一致,这样几乎不用改动代码。
2 相关内容的添加
2.1将旧的vc60.h和vc60.cpp内容复制到新文件的适当处即可使用。
2.2用文本方式或者使用记事本打开文件“vc60.rc”,找到IDD_VC60_DIALOG相关部分,全部复制替换“vc61.rc”中对应部分。
四 编译测试
===================================
将vc6的对话框资源复制到vc2010中
一 在vs2010下创建vc++项目,假设名称为“vc2010”,在“解决方案资源管理器”选项页下,右击“资源文件”夹--添加--添加现有项,找到旧的vc工程文件夹下的资源文件 vc6.rc,打开它。
二 转到“资源视图”选项页下,
一)粘贴对话框
(1) 点击选择文件夹 vc6.rc--Dialog,选择并复制对话框IDD_VC6_DIALOG
(2) 点击选择文件夹 vs2010.rc--Dialog,粘贴对话框IDD_VC6_DIALOG 到此
二) 将旧的文件添加到工程中
1从Windows资源管理器中,找到旧的对话框IDD_VC60_DIALOG对应的vc60.h头文件和vc60.cpp实现文件,复制它们到新工程vc2010所在的文件夹中的子文件夹vc2010下。
2转到“解决方案资源管理器”--“解决方案"vc2010"”,右击文件夹 “vc2010”--添加--添加现有项,找到本工程下刚复制来的vc60.h和vc60.cpp,,按“添加”按钮添加到工程中。
3 这样有可能造成类向导不正常,你可以删除项目文件夹下类向导文件vc2010.sdf,再类向导时自动加入全部文件即可。
三 上步骤二),也可以使用下面两个步骤的方式 实现
1 新建对话框并添加类
给工程添加一个对话框,比如也叫IDD_VC60_DIALOG,给其添加类,基类选择CDialog,类名最好和旧的保持一致,这样几乎不用改动代码。
2 相关内容的添加
2.1将旧的vc60.h和vc60.cpp内容复制到新文件的适当处即可使用。
2.2用文本方式或者使用记事本打开文件“vc6.rc”,找到IDD_VC60_DIALOG相关部分,全部复制替换“vc2010.rc”中对应部分。
四 再次转到“解决方案资源管理器”选项页下, 将“资源文件”夹下旧的vc工程文件夹下的资源文件 vc6.rc,选择删除。
五 编译测试
尤其要注意上面所说的文件夹的确切名称和位置,否则有可能出现错误。
=============
可能出现的问题:
1 修改原来#include的app引用文件,改成现在的即可。
2 关于对话框 CAboutDlg ,可能重复,注释或者删除类的声明和使用的相关地方即可。
3 字符串函数等可能出现错误,如果不想改变内容,可以改变工程的字符集即可,步骤为:
项目 --- VC2010属性 ---配置属性--常规
点击 “字符集”右侧的选择框,从“使用Unicode字符集”改为“使用多字节字符集”
更多的问题可以参看《vc6的多字节字符集与vc2010的Unicode字符集》
4 如果上来出现 Debug AssertionFailed!类似的错误,可能是控件的ID号重复或者没有造成的错误,你可以在下面的数据交换内,按F9键设置断点,按F5键追踪决定是哪个控件出现问题,并针对增加或修改其ID号。
void CVc6Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CWaveGenDlg)
DDX_Control(pDX, IDC_LIST_REPORT, m_listReport);
5 祝你成功!