Как предотвратить дублирование идентификатора ресурса в разных плагинах? - PullRequest
1 голос
/ 24 сентября 2010

В MFC C ++, когда мы добавляем новый ресурс в EXE, говорит строка, он автоматически генерирует идентификатор:

#define ID_SHOW_OUTPUT                 10313

Если у него есть плагин (DLL) с аналогичным идентификатором, он будет вызывать неопределенное поведение после срабатывания.

В целях безопасности я попытался определить свой личный идентификатор:

#define ID_SHOW_OUTPUT          (WM_APP+6)

Однако у меня будет много работы, если в EXE и DLL будут сотни ресурсов.

Я не уверен, что есть лучшее решение и предотвращение дублирования идентификатора ресурса в исполняемых файлах ???

1 Ответ

4 голосов
/ 25 сентября 2010
  • Проверьте эту надстройку .Это дает вам более высокий контроль над идентификаторами ресурсов.

  • Как прокомментировал Люк, не должно быть проблем с использованием DLL с дублирующимися идентификаторами ресурсов.Только один ресурсный модуль активен одновременно, используя AfxSetResourceHandle

  • Установка идентификаторов команд для произвольных UINT значений (В своем вопросе вы присвоили WM_APP + 6 командеID) не является безопасным, поскольку эти значения интерпретируются MFC во многих местах.Проверьте этот вопрос StackOverflow для получения более подробной информации.

...