来自微软技术文档https://support.microsoft.com/zh-cn/kb/829437
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 829437
本任务中
概要
本分步指南介绍如何导入对话框资源,资源文件从 Microsoft Visual C++.NET 项目到另一个 Visual C++.NET 项目资源模板或从 Microsoft Visual C++ 2005年项目到另一个 Visual C++ 2005年项目资源模板。
本文还介绍如何使用 Windows 窗体应用程序模板,并可以从中复制资源的 MFC 应用程序模板创建对话框基于资源的项目。本文还介绍了两种不同的方法可以将资源从一个项目复制到另一个项目。
返回页首
本文还介绍如何使用 Windows 窗体应用程序模板,并可以从中复制资源的 MFC 应用程序模板创建对话框基于资源的项目。本文还介绍了两种不同的方法可以将资源从一个项目复制到另一个项目。
返回页首
要求
本文假定您熟悉下列主题︰
- 编程的 Visual C++.NET 或 Visual C++ 2005
- 资源文件
在 Visual C++.NET 或 Visual C++ 于 2005 年创建基于对话框的应用程序
若要在 Visual C++.NET 2003年中或 Visual C++ 于 2005 年使用 Windows 窗体应用程序项目模板创建一个基于对话框的应用程序,请执行以下步骤︰
- 启动 Microsoft Visual Studio.NET 2003年或 Microsoft Visual Studio 2005年。
- 在文件菜单上,指向新建,然后单击项目。
- 在项目类型下单击Visual C++ 项目,然后单击模板下的Windows 窗体应用程序 (.NET) 。
注意可视有关 Studio 的 2005 年在 项目类型 框中,单击 Visual c + +,然后单击 模板 下的 Windows 窗体应用程序。 - 在名称文本框中,键入DialogApp,,然后单击确定。
- 在解决方案资源管理器中,单击资源视图选项卡。
- 在资源视图中,展开DialogApp节点。
- App.rc文件夹中,用鼠标右键单击,然后单击添加资源。
- 在添加资源对话框中,展开对话框在资源类型下。
- 单击IDD_FORMVIEW [英语 (美国)],然后单击新建。
注意在 Visual 有关 Studio 的 2005 年单击 IDD_FORMVIEW。 - 对话框模板,右键单击,然后单击属性。
- 将ID属性更改为IDD_MY_FORMVIEW。
- 将一个按钮控件添加到对话框模板。
- 请按 CTRL + SHIFT + S 组合键以保存所有文件。
- 在文件菜单上,单击关闭解决方案关闭解决方案。
- Visual Studio.NET 2003年或 Visual Studio 2005年退出。
- 启动 Microsoft Visual Studio.NET 或 Visual Studio 2005年。
- 在文件菜单上,指向新建,然后单击项目。
- 在项目类型下单击Visual C++ 项目,然后单击模板下的MFC 应用程序。
注意可视有关 Studio 的 2005 年在 项目类型 框中,单击 Visual c + +,然后单击 模板 下的 MFC 应用程序。 - 在名称文本框中,键入DialogApp,,然后单击确定。
- 在MFC 应用程序向导-DialogApp对话框中,单击应用程序类型。
- 在应用程序类型下选择基于对话框,请单击,然后单击完成。
- 在解决方案资源管理器中,单击资源视图选项卡。
- 在资源视图中,展开DialogApp节点。
- DialogApp.rc文件夹中,用鼠标右键单击,然后单击添加资源。
- 在添加资源对话框中,展开对话框在资源类型下。
- 单击IDD_FORMVIEW [英语 (美国)],然后单击新建。
注意在 Visual 有关 Studio 的 2005 年单击 IDD_FORMVIEW。 - 对话框模板,右键单击,然后单击属性。
- 将ID属性更改为IDD_MY_FORMVIEW。
- 将一个按钮控件添加到对话框模板。
- 请按 CTRL + SHIFT + S 组合键以保存所有文件。
- 在文件菜单上,单击关闭解决方案关闭解决方案。
- Visual Studio.NET 或 Visual Studio 2005年退出。
复制对话框资源
注意
- 启动 Visual Studio.NET 或 Visual Studio 2005。
- 在文件菜单中,指向打开,,然后单击文件。
- 找到源资源文件。
- 单击资源文件,然后单击打开来打开该文件。
- 目标资源文件执行步骤 2 到 4。
- 若要切换到源资源文件,请单击包含该文件的文件名称的选项卡。
- 展开包含资源文件的文件名称相同的名称的文件夹。
- 展开对话框文件夹。
- 右键单击您想复制的对话框资源,然后单击复制。
- 若要切换到目标资源文件,请单击包含该文件的文件名称的选项卡。
- 用鼠标右键单击具有与目标的资源文件的文件名相同的名称的文件夹,然后单击 粘贴。 对话框资源将显示在目标资源文件中的 对话框 文件夹中。
- 请按 CTRL + SHIFT + S 组合键以保存所有文件。
- 在文件菜单上,单击关闭解决方案关闭解决方案。
使用资源模板
- 启动 Visual Studio.NET 或 Visual Studio 2005。
- 在文件菜单中,指向打开,,然后单击文件。
- 找到源资源文件。
- 单击资源文件,然后单击打开来打开该文件。
- 在文件菜单上,单击保存FileName为。
注意FileName 是一个占位符资源文件的文件名。 - 将资源文件另存为资源模板文件,在保存类型列表中,选择资源模板 (*.rct) ,然后单击保存。
- 在文件菜单上,单击关闭以关闭资源文件。
- 在文件菜单上,单击打开解决方案。
- 在打开解决方案对话框中,找到其中必须将对话框资源文件复制到目标项目。
- 该解决方案文件,请单击,然后单击打开。
- 在解决方案资源管理器中右击ProjectName,,然后单击属性。
注意ProjectName为您打开的项目的名称的占位符。 - 在ProjectName属性页对话框中,展开配置属性文件夹,然后单击资源文件夹。
- 单击附加包含目录属性的值旁边的省略号按钮 (...)。显示附加包含目录对话框。
- 在列表框中,单击,然后键入您在第 6 步中保存的资源模板文件的目录路径 (不带引号)。
或者,您可以单击右上方的列表框中显示一个省略号按钮 (...),可以单击它可以显示一个对话框。可以使用此对话框以指向包含您在步骤 6 中保存资源模板文件的目录。 - 单击附加包含目录对话框中的确定。
注意请确保在附加包含目录属性路径字符串未用引号括起来。如果.rct 文件的路径包含空格,并且用省略号按钮 (...) 来选择该文件夹,默认情况下,它是用引号括起来。在这种情况下,必须删除引号。也,如果您键入路径,必须确保您键入正确的路径与确切的空格数。 - 单击应用,然后单击确定以关闭ProjectName属性页对话框。
- 在解决方案资源管理器中,单击资源视图选项卡。
- 在资源视图中,展开ProjectName节点。
- 扩展到资源文件相对应的文件夹。
- 该对话框文件夹,用鼠标右键单击,然后单击添加资源。
- 在添加资源对话框中,展开对话框在资源类型下。您注意到您想要复制的对话框资源。
- 单击要复制的对话框资源,然后单击新建此对话框资源添加到项目。
- 请按 CTRL + SHIFT + S 组合键以保存该项目。
- 在文件菜单上,单击关闭解决方案关闭解决方案。
- Visual Studio.NET 或 Visual Studio 2005年退出。
这里有个笨办法,不过基本上可以实现导入其他项目对话框(写得很繁琐,不过只要做过一遍基本上就可以记住所有步骤了,因为其原理比较简单)。前提:1.已经做好的那个对话框不是新建立工程时默认提供的对话框(也就是说需要自己新建一个对话框来实现你要的功能,我这个方法如果导入默认提供的对话框的话会出错,具体原因我也正在探索)2.对话框、空间的ID要自己取(我不知道在MFC里子对话框的控件ID会不会和主对话框冲突,我没试过,但是要开发软件的话,这种约定俗成的东西也不用我多说了吧)3.确定即将导入的对话框的ID和工程里resource.h里定义的宏、还有待导入对话框头文件里的对话框数据(就是enum { IDD =... }这个东西)要保持一致,不然可能弹不出指定对话框。步骤:1.导入对话框的头文件和源文件,以及该对话框所涉及到的所有文件(比如bmp图片
等);2.如果有涉及其他文件,可能需要重新修改这些文件的ID(感觉相当麻烦),如果没有则可略过此步;3.在导入对话框的源文件里,将其include的应用类头文件更改为当前工程的应用类头文件(如果略过此步进行编译的话,
VS平台
也会在此提示找不到头文件)4.可以用记事本打开re
source.h文件,在此定义对话框的相应对话框和控件的ID,注意其值不能重复,最好是在导入对话框的工
程里找到对应的值拷贝过来,然后
再适当修改。5.用记事本
打
开资源视图
的文件(后缀为.rc的),从导入对话框的工程里将其具体信息拷贝
至当前文件中。 这样
就可以编译运行了,这些都是我在VS2008平台下做的,可以对导入的对话框自由调用,暂时都没有发现有什么问题。在
没有办法的时候,可以试试我这个方法。
如何添加一个依赖项目
1.新建解决方案,项目A
2.为项目A添加一个依赖项目B,项目B做为静态lib被项目引用,
项目B创建步骤如下:
a>选择菜单"文件"->新建->项目,弹出“新建项目”对话框;
b>左侧列表选择Visual C++,右侧列表选择win32控制台应用程序,
对话框下面输入名称,选择位置,解决方案选择添加到解决方案,确定。
C>Win32应用程序向导,下一步,选择应用程序类型为静态库,
添加公共头文件以用于选择MFC(根据实际情况选择,因为项目需求编译需要选择MFC),完成。
3.项目配置,项目A右键选择属性,选择通用属性,引用->添加新引用->选择项目B;
引用项目B的头文件目录,步骤如下:配置属性->VC++目录->包含目录:添加项目B头文件路径..\B\Header。
其中编译的时候会出项目A引用项目B的接口无法解析,可能是3步骤没有做。