gpt4 book ai didi

visual-studio - 如何在 MFC 中为不同的构建目标使用不同的资源文件

转载 作者:行者123 更新时间:2023-12-04 03:42:25 25 4
gpt4 key购买 nike

我有一些特定于目标的资源。就像目标 的不同对话框客户和目标 的不同对话框管理员 .还有一些特定于每个目标的字符串。我不希望特定于管理应用程序的资源和代码出现在客户端构建中。

假设我可以有 3 个资源文件,管理员 , 客户普通 并以某种方式告诉构建引擎使用 管理员 普通 res 用于管理构建,并使用 客户普通 res 用于客户端构建。

我怎样才能做到这一点?

如何拥有 1 个以上的资源文件并为特定目标构建使用资源文件。?

最佳答案

好的,这是我完全回答您的问题的尝试,如果获得赏金会很有趣(它们不会经常发生在 MFC 标记的问题中 :) )。请指出您认为没有解决您问题的哪些方面(如果有)。这是 VS 2008 的全部内容,对其他版本的更改应该是最小的。

  • 首先为每个不同的构建目标添加资源文件,例如“admin.rc”、“common.rc”等。在解决方案浏览器中,右键单击您的项目,“添加->新建项目->资源文件”。
  • 在解决方案浏览器中右键单击新添加的资源文件,选择“属性”,在“常规”下将“从构建中排除”设置为"is"。
  • 在资源 View 中,您现在可以将所需的资源添加到相应的资源文件中。
  • 接下来,在资源 View 中,右键单击“主”资源文件 () 并选择“资源包含”。
  • 在下面的框中,在任何内容的末尾,添加

  • #ifdef ADMIN
    #include "admin.rc"
    #endif


    当然,在预处理器中使用的符号您可以自己选择,并且文件名需要与您之前创建资源文件时选择的任何内容相匹配。
  • 然后,在您的“管理”项目配置中(我假设您为每个目标使用不同的配置?)并在解决方案资源管理器中,右键单击您的项目并导航到“资源->常规”。在“预处理器定义”下,添加“ADMIN”(或您在上一步中选择的任何内容)。
  • 构建您的解决方案。您可以使用类似 http://www.wilsonc.demon.co.uk/d10resourceeditor.htm 的内容来验证二进制文件中包含哪些资源。或 http://melander.dk/reseditor/ .

  • 请注意,显然您必须考虑各种构建中不可用的资源;所以你必须确保例如没有显示将在其构造函数中使用对话框 IDD 的对话框。您也可以通过预处理器执行此操作;只需将相同的标志添加到相应配置中的 C++ 预处理器即可。

    另一个问题是每个 .rc 文件都有一个 resource.h,并且每个文件都使用自己的编号。您可以通过仔细的命名和编号来完成这项工作,但我会为每个分配不同的范围,以尝试在编译时捕获尽可能多的问题。为此,打开您的“resource1.h”或您所称的任何内容并将 _APS_NEXT__VALUE 定义更改为更高的数字。

    或者,您可以将所有资源定义粘贴到一个 resource.h 中并编辑所有 .rc 文件以包含该一个 resource.h。只需在解决方案资源管理器中右键单击 rc 文件,然后选择“打开方式”并单击“源代码编辑器”。如果您要走“复杂的资源构建”路线,则无论如何您都必须熟悉 rc 文件的格式(至少对于基础知识而言)。这并不难,只要确保您对链接器、资源编译器、.rc 文件、.cpp 文件和 resource.h 文件如何相互关联有一个心理了解。此外,特定于 MFC 的预处理器值起初看起来令人生畏,但它们大多是不言自明的,无论如何您在大多数情况下都可以忽略它们。

    Petzold 对资源文件及其格式进行了简洁但充分的解释,您可能想从壁橱中挖掘出来并在掌握事物的窍门时将其放在手边。

    关于visual-studio - 如何在 MFC 中为不同的构建目标使用不同的资源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15652108/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com