在Windows .rc文件/ dll中使用字符串类型的资源标识符

时间:2011-09-16 11:10:32

标签: windows winapi dll mfc

我们的代码库中有许多MFC扩展dll,其中许多都嵌入了项目.rc文件中定义的Windows资源(IDS _...,IDD _...,IDB _...等)。我们使用数字标识符来定义我们的资源,特别注意我们的资源ID不会在dll之间发生冲突,这需要一些管理来确保我们的开发人员不使用相同的编号。

我意识到字符串类型资源标识符可能是一种简单的方法,这意味着我们可以为每个不同的dll中的每个资源定义唯一标识符。

我的问题是,这样做是否有任何技术问题,例如:

  • MFC dll /资源链是否仍能正常运行?
  • Visual Studio资源编辑器是否仍然有效?

我在MS技术说明中没有找到任何说明这将是一个问题的内容 - 我只是想知道人们是否有过这方面的经验。

1 个答案:

答案 0 :(得分:3)

但请注意,字符串表(IDS_)中字符串的ID必须是数字(16位IIRC)。字符串与另一个资源之间的区别是由于字符串不是单独的资源。实际上,字符串表包含一组资源,每个资源最多包含16个带有连续ID的字符串。

对话框中的控件ID也是如此。但你很可能知道这一点。

在资源编辑器中,您只需在资源名称周围加上引号即可在属性网格中指定字符串资源ID。

关于对话框和资源编辑器:您将遇到一个小问题:每当您为对话框创建一个类时,生成的代码都包含枚举{IDD = resourceid}。不用说它对字符串id不起作用。但你可以轻松摆脱这个IDD枚举并用字符串替换它。