Использование строковых идентификаторов ресурсов в Windows .rc файлах / библиотеках - PullRequest
2 голосов
/ 16 сентября 2011

В нашей базе кода есть несколько dll-расширений MFC, многие из которых имеют встроенные ресурсы Windows, определенные в файлах .rc проектов (IDS _..., IDD _..., IDB _... и т. Д.). Мы используем числовые идентификаторы для определения наших ресурсов, уделяя особое внимание тому, чтобы наши идентификаторы ресурсов не конфликтовали между dll, что требует некоторого управления, чтобы наши разработчики не использовали одинаковые нумерации.

Я понял, что идентификаторы ресурсов строкового типа могут быть простым способом, то есть мы можем определить уникальные идентификаторы для каждого ресурса в каждой отдельной dll.

Мой вопрос, есть ли технические проблемы с этим, например:

  • Будет ли цепочка DLL / ресурсов MFC по-прежнему функционировать правильно?
  • Будет ли работать редактор ресурсов Visual Studio?

Я не нашел ничего в Технических примечаниях MS, чтобы сказать, что это будет проблемой - я просто хотел бы знать, если бы у людей был опыт с этим.

1 Ответ

3 голосов
/ 16 сентября 2011

Обратите внимание, что идентификаторы строк в таблице строк (IDS_) ДОЛЖНЫ быть числовыми (16 битов IIRC).Разница между строкой и другим ресурсом заключается в том, что строки не являются отдельными ресурсами.На самом деле таблица строк состоит из набора ресурсов, каждая из которых содержит до 16 строк с последовательными идентификаторами.

То же самое относится и к идентификаторам элементов управления в диалоговых окнах.Но вы, скорее всего, это знаете.

В редакторе ресурсов вы можете указать строковый идентификатор ресурса в сетке свойств, просто заключив кавычки вокруг имен ресурсов.

Относительно диалогов и редактора ресурсовУ вас будет небольшая проблема: всякий раз, когда вы создаете класс для диалога, сгенерированный код содержит enum {IDD = resourceid}.Само собой разумеется, что это не будет работать для идентификатора строки.Но вы можете легко избавиться от этого перечисления IDD и заменить его строкой.

...