如何生成字符串类型ID的资源条目?

时间:2015-02-10 09:42:18

标签: windows winapi embedded-resource rc

我有一个带有以下条目的.rc文件:

01111 my_res { "string 1" }
01113 my_res { "string 2" }
01119 my_res { "string 3" }

当我使用rc.exe编译此.rc文件时,资源条目ID分别变为111111131119

显然,资源编译器将ID视为数字。

我的第一印象是.res文件无法将数字存储为字符串类型。但是当使用资源编辑器(例如:XNResourceEditor.exe)将资源ID 1111更改为01111并将其存储为01111时。这表明资源ID可以将数据存储为字符串类型。

有没有办法将数字资源id编译为字符串类型?

1 个答案:

答案 0 :(得分:3)

资源编译器RC没有任何允许您转义整数ID的语法,因此它被视为文本。

文档说:

  

唯一名称或标识资源的16位无符号整数。

资源编译器尝试将ID解释为整数。如果它可以这样做,那么ID被解释为整数,否则它被解释为字符串。如果整数超过16位整数的边界,则使用其值0xffff

这是资源编译器的限制。资源格式支持仅包含数字的文本ID。如果您对生产此类资源至关重要,那么我认为您需要:

  1. 查找允许将数字作为文本进行转义的资源编译器,或
  2. 编写自己的基本资源编译器来执行任务。