2016-06-07 4 views
0

Я больше использовать для Qt, чем MFC, но я следующее беспокойство:Использование 1 уникальный диалог MFC для нескольких различных объектов одного и того же класса

я создавал панель с 4-мя кнопками, все эти кнопки имеют Если вы нажмете на них, откроется еще один диалог.

Этот диалог имеет ту же самую компоновку для 4 кнопок.

Однако, поскольку диалог связан с классом через enum {IDD = ...} Мне было интересно, можно ли использовать один и тот же шаблон диалога для более чем одного объекта, или если бы мне нужно было создать 4 диалога, делающие в основном одно и то же с другим идентификатором?

ответ

1

Ресурс ID в операторе enum { IDD = <resource ID> }; определяет константу времени компиляции, который передается в CDialog -c'tor (по умолчанию 1)) построить собственные элементы управления из диалогового шаблона ресурса. Затем он передается одной из функций создания диалога (CreateDialog и т. Д.) Для выполнения тяжелого подъема.

Нет ограничений на использование шаблона диалога для нескольких классов CDialog.


1) Вы можете передать диалог шаблона идентификатора ресурса непосредственно к CDialog -c'tor в вашей реализации пользовательского класса, и не должны использовать стандарт перечисленного значения IDD.

+0

Я не рассматривал его как ресурс, и ваше объяснение сделало вещи более ясными – trexgris

+0

@Ajay: 'enum' - это просто ваше среднее числовое значение (у меня нет подсказки, что вы подразумеваете под *« не первый класс C++ »*; в этом нет ничего особенно впечатляющего). Если несколько классов определяют член с тем же именем, это не является нарушением единого правила определения. Члены группы привязаны к их закрытому классу. Другими словами: каждый производный класс CDialog может иметь член класса с именем IDD (и это делалось в течение десятилетий). Независимо от этого, любое количество вариантов диалога может использовать один и тот же ресурс шаблона диалога. – IInspectable

Смежные вопросы