我们的代码库中有许多 MFC 扩展 dll,其中许多都嵌入了项目 .rc 文件中定义的 Windows 资源(IDS_...、IDD_...、IDB_... 等)。我们使用数字标识符来定义我们的资源,特别注意我们的资源 ID 不会在 dll 之间发生冲突,这需要进行一些管理以确保我们的开发人员不会使用相同的编号。
我意识到字符串类型资源标识符可能是一种简单的方法,这意味着我们可以为每个不同的 dll 中的每个资源定义唯一的标识符。
我的问题是,这样做是否存在任何技术问题,例如:
- MFC dll/资源链是否仍能正常运行?
- Visual Studio 资源编辑器仍然可以使用吗?
我在 MS 技术说明中没有发现任何内容表明这将是一个问题 - 我只是想知道人们是否有过这方面的经验。
最佳答案
但请注意,字符串表 (IDS_) 中字符串的 ID 必须是数字(16 位 IIRC)。字符串和其他资源之间的区别是由于字符串不是单独的资源。实际上,字符串表由一组资源组成,每个资源最多包含 16 个 ID 连续的字符串。
对话框中的控件 ID 也是如此。但您很可能知道这一点。
在资源编辑器中,您只需在资源名称两边加引号即可在属性网格中指定字符串资源 ID。
关于对话框和资源编辑器:您将遇到一个小问题:每当您为对话框创建一个类时,生成的代码都会包含 enum { IDD = resourceid }。不用说,它不适用于字符串 id。但是您可以轻松地摆脱此 IDD 枚举并将其替换为字符串。
关于windows - 在 Windows .rc 文件/dll 中使用字符串类型资源标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7443804/