【问题标题】:What is the difference between RCDATA and User-Defined Resource?RCDATA 和用户定义的资源有什么区别?
【发布时间】:2014-12-01 20:19:06
【问题描述】:

RCDATA 和用户定义的资源有区别吗? RCDATA 只是用户定义资源的通用名称吗?

【问题讨论】:

  • 据我所知没有区别。
  • “为应用程序定义原始数据资源。原始数据资源允许将二进制数据直接包含在可执行文件中”
  • 区别在于资源类型。用户定义资源的类型是您给它的名称。 RCDATA 的类型是 RT_RCDATA。

标签: c++ winapi embedded-resource


【解决方案1】:

有两种资源适合存储用户定义的数据。

  1. 第一种类型是 RCDATA(原始数据)。 Windows 知道资源的类型,但不知道如何解释资源数据本身。

  2. 第二种是 Windows 未定义其类型的任何资源。在这种情况下,Windows 既不知道资源的类型,也不知道如何解释资源数据。

您可以将任何一种资源用于用户定义的数据。

我相信它是 Windows 认为是用户定义资源的第二种资源。这是System defined resource types 的列表。

RESOURCEHEADER sructure 的 Type 成员解释了用户定义的资源是什么。

【讨论】:

  • 那么将 RCDATA 视为由 Windows 创建供我们使用的用户定义资源是错误的吗?将其视为二进制资源类型是否更好,并且用户定义的资源也恰好存储二进制数据,两者之间没有任何关系?
  • 我尽量避免在我的回答中使用“用户定义的资源”一词,因为它对不同的人似乎意味着不同的东西。对某些人来说,它似乎意味着 RCDATA 类型的资源(顺便说一句,它是由 Windows 定义的资源类型),但我读过的 MSDN 文档似乎使用该术语来表示类型是用户定义的资源。至于思考这些事情的最佳方式,我真的不能说哪种方式最适合你。
  • 这似乎是一个哲学问题,哈哈,无论如何,我认为最好将它们视为相同的东西(它们都存储二进制数据),但类型名称不同。
【解决方案2】:

“RCDATA 和用户定义的资源有区别吗?”

如果我读到 the documentation 它会说

RCDATA 资源
为应用程序定义原始数据资源。原始数据资源允许将二进制数据直接包含在可执行文件中。

它还说

特性 |双字| 用户定义的信息,关于可供读取和写入资源文件的工具使用的资源。有关详细信息,请参阅特性。


“RCDATA 只是用户定义资源的通用名称吗?”

所以我想说,可以认为没有真正的区别,但只是 RCDATA 是您的资源 (.rc) 文件中用于用户定义的资源的关键字.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 2016-02-15
    • 2014-07-29
    • 2018-03-24
    • 2010-12-28
    • 2015-10-17
    • 2010-11-10
    相关资源
    最近更新 更多