RCDATA 和用户定义的资源有啥区别?
Posted
技术标签:
【中文标题】RCDATA 和用户定义的资源有啥区别?【英文标题】:What is the difference between RCDATA and User-Defined Resource?RCDATA 和用户定义的资源有什么区别? 【发布时间】:2014-12-01 20:19:06 【问题描述】:RCDATA 和用户定义的资源有区别吗? RCDATA 只是用户定义资源的通用名称吗?
【问题讨论】:
据我所知没有区别。 “为应用程序定义原始数据资源。原始数据资源允许将二进制数据直接包含在可执行文件中” 区别在于资源类型。用户定义资源的类型是您给它的名称。 RCDATA 的类型是 RT_RCDATA。 【参考方案1】:有两种资源适合存储用户定义的数据。
第一种类型是 RCDATA(原始数据)。 Windows 知道资源的类型,但不知道如何解释资源数据本身。
第二种是 Windows 未定义其类型的任何资源。在这种情况下,Windows 既不知道资源的类型,也不知道如何解释资源数据。
您可以将任何一种资源用于用户定义的数据。
我相信它是 Windows 认为是用户定义资源的第二种资源。这是System defined resource types 的列表。
RESOURCEHEADER sructure 的 Type 成员解释了用户定义的资源是什么。
【讨论】:
那么将 RCDATA 视为由 Windows 创建供我们使用的用户定义资源是错误的吗?将其视为二进制资源类型是否更好,并且用户定义的资源也恰好存储二进制数据,两者之间没有任何关系? 我尽量避免在我的回答中使用“用户定义的资源”一词,因为它对不同的人似乎意味着不同的东西。对某些人来说,它似乎意味着 RCDATA 类型的资源(顺便说一句,它是由 Windows 定义的资源类型),但我读过的 MSDN 文档似乎使用该术语来表示类型是用户定义的资源。至于思考这些事情的最佳方式,我真的不能说哪种方式最适合你。 这似乎是一个哲学问题,哈哈,无论如何,我认为最好将它们视为相同的东西(它们都存储二进制数据),但类型名称不同。【参考方案2】:“RCDATA 和用户定义的资源有区别吗?”
如果我读到 the documentation 它会说
RCDATA 资源为应用程序定义原始数据资源。原始数据资源允许将二进制数据直接包含在可执行文件中。
它还说
特性 |双字| 用户定义的信息,关于可供读取和写入资源文件的工具使用的资源。有关详细信息,请参阅特性。
“RCDATA 只是用户定义资源的通用名称吗?”
所以我想说,可以认为没有真正的区别,但只是 RCDATA
是您的资源 (.rc
) 文件中用于用户定义的资源的关键字.
【讨论】:
以上是关于RCDATA 和用户定义的资源有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 中的头文件、源文件和资源文件都是啥?有啥区别??
VC资源中的RCDATA是啥,RT_MANIFEST是啥意思,请详细赐教,谢谢。