Итак, мы с Вами в проектах часто встречали ресурсы с одинаковыми именами. Вопрос в том, какой смысл вкладывается в это ? Давайте рассмотрим простое приложение, которое генерирует MFC AppWizard и посмотрим там ресурсы. Под идентификатором IDR_MAINFRAME кроется много ресурсов.
Много. В данном случае это простая логика. Объект рамки окна имеет эти атрибуты и тогда при создании приложения о имени ресурса не надо задумываться. Например:
...... LoadMenu(IDR_MAINFRAME) LoadIcon(IDR_MAINFRAME) ......
Вроде опять парадокс. Как MFC разбирается в одинаковых идентификаторах ??? Но в том-то и дело, что они разные. LoadMenu() ищет именно идентификатор меню, а он с таким именем уникальный. От нас скрывается целый процесс, где как раз и указывается тип ресурса. Смотрите шаги в WinAPI для лучшего понимания.
Итак, вывод первый. Использование ресурсов разных по типу, но с одинаковым идентификатором удобно для ресурсов логически связанных с объектом.
Но это еще не все. Есть хороший пример с иконами. Смотрите "N/A", который расказывает о том как под одним идентификатором хранится несколько икон. А это зачем ? Во-первых, посмотрите "Шаг 52 - Отображение икон", что иконы могут отображаться по разному, а во-вторых описание функции "Шаг 48 - LoadIcon()", так вот эта функция будет искать икону по идентификатору определенного размера. Вывод: Под одним идентификатором могут находиться несколько элементов, если в будущем могут потребоваться элементы с разными параметрами и мы заранее не можем знать какой понадобится. Икону для отображения значка приложения будет извлекать Windows, о каком тут прогнозе можно говорить :-) ?