【问题标题】:Using the MFC dialog editor to add event handlers with a resource-only DLL使用 MFC 对话框编辑器通过纯资源 DLL 添加事件处理程序
【发布时间】:2014-06-24 08:21:08
【问题描述】:

最初我的 MFC 程序有一个 .rc 文件,其中包含两种语言的资源。但是,现在我在两个单独的纯资源 dll 项目中有两个 .rc 文件(在同一个解决方案中),并使用 LoadLibrary() 和 AfxSetResourceHandle() 动态选择语言(我引用了this article)。

它似乎运行良好,但一个问题是我无法正确使用对话框编辑器来处理纯资源 dll 项目中的对话框。它正常显示对话框,但我无法通过双击控件或使用属性菜单来添加事件处理程序。有什么方法可以连接同一解决方案中不同项目中的代码和资源文件?

编辑

我稍微改变了方法。我没有在单独的资源项目中创建新的 RC 文件,而是在主项目中创建它们并将它们从构建中排除。我让它们被单独的资源项目引用。

重要的一点是我在每个 RC 文件的 只读符号指令 中添加了#include "resource.h"(您可以通过右键单击资源视图中的 RC 文件并选择 资源包括项)。 "resource.h" 这里是与主项目的原始 RC 文件相关的文件,该文件具有多种语言的资源。我不知道为什么要添加它,但是卫星 dll 似乎有必要运行良好。

剩下的一个问题是如何维护多个 RC 文件。对于添加资源,如果我要维护原始 RC 文件及其 resource.h 文件,我可能必须先将资源添加到原始 RC 文件中,然后将它们复制到每种语言特定的 RC 文件中。这是正确的方法,还是我可以不用原始 RC 文件继续?

【问题讨论】:

    标签: c++ visual-studio dll mfc resource-dll


    【解决方案1】:

    将此资源的 RC 文件也包含在项目中。但将其从构建中排除。

    如果你有两个资源文件。以不同的方式使用资源文件:

    1. 使用普通 MFC 资源文件创建独立程序...
    2. 在内部为所有对话资源使用语言标签
    3. 比在第二个项目中使用此资源来构建附属 DLL
    4. 设置资源编译器定义的资源,使带有特定语言标记的资源不包括在内。

    【讨论】:

    • 如果我将 RC 文件包含在包含源代码的项目中,那么如何从构建中排除 RC 文件?
    • 在解决方案资源管理器中右键单击 .rc 文件,在“常规”下将“从构建中排除”设置为“是”。
    • 我将资源 dll 项目中的 RC 文件包含到具有源代码的项目中(可能只是引用未复制),但我仍然无法使用对话框编辑器添加事件处理程序。
    • 您有多个资源文件吗?改变了我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多