【问题标题】:How do I use Resources manually?如何手动使用资源?
【发布时间】:2011-09-14 16:23:30
【问题描述】:

我使用的是 VC++ 2005 express,它没有资源编辑器。因此,我想知道是否有办法手动使用资源?我真的必须制作 .rc 文件才能使用资源吗?我的意思是,我不能像 fstream C++ 那样直接导入它吗?

【问题讨论】:

  • 您为答案而苦苦挣扎的原因是问题不清楚。添加更多细节以获得更好的答案。

标签: c++ windows


【解决方案1】:

几个选项:

  • 您可以下载完整的Windows SDK,它是免费的,包含官方 C 和 C++ 编译器以及资源编译器。
  • 如果您是大学生,可以从 MSDNAA 下载完整版的 Visual Studio。
  • 如果您是没有 MSDNAA 的学生,您仍然可以从 DreanSpark 获取完整副本。
  • 您可以购买完整版的 Visual Studio -- 我认为这可能成本过高。

假设您使用 Windows SDK 路线,您编写一个资源脚本并将其传递给rc tool

(不知道为什么你还在使用 2005 Express,虽然 2010 Express 已经过时了......)

【讨论】:

    【解决方案2】:

    此问题的完整答案取决于您尝试创建的资源类型。窗口和对话框的一个选项是完全忽略资源并使用RegisterClassExCreateWindowSetWindowLongPtr 和其他几个函数创建您需要的内容。

    如果您要创建可调整大小的内容,有时这条路线比使用资源文件更容易。

    【讨论】:

    【解决方案3】:

    如果您想以艰难的方式做到这一点,Windows API 提供了functions for both reading and writing resources。看看UpdateResource

    【讨论】:

    • 问题是如何从外部加载它们?更新函数只更新模块内的资源文件,提供我们有一个资源文件的句柄。如何从文件 url 创建该句柄?
    • @biloon:什么样的资源?如果您不想将您的内容嵌入到应用程序中,您通常根本不使用资源,而是使用松散文件的集合。在任何情况下,您都从BeginUpdateResource 获得句柄,并且您需要一个本地文件名,而不是 URL。
    • 好的,我有点明白你的意思,但如果我的理解有误,请纠正我。资源文件是内部数据文件并保留在可执行文件或库中。因此,在编译期间,我必须以某种方式将其加载到可执行文件中。但是,我不知道如何加载它们,因为 UpdateResource 要求我为其提供指向资源文件的指针,而我不知道如何获取。
    【解决方案4】:

    有几个免费的资源编辑器可用:

    仅举两个。对于资源编译器,有简约的GNU windres

    【讨论】:

      【解决方案5】:

      我会推荐 ResHacker 或文本编辑器来构建资源,GoRC 来编译它们

      【讨论】:

        猜你喜欢
        • 2015-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-15
        • 2015-10-30
        • 1970-01-01
        • 2019-06-28
        相关资源
        最近更新 更多