Поделиться через


Наследование элементов управления из стандартных элементов управления

Как и с любым CWnd- производный класс можно изменить поведение элемента управления путем наследования новый класс из существующего класса элемента управления.

Создать производный класс элемента управления

  1. Создайте производный класс из существующего класса элемента управления и при необходимости переопределите функцию-член Создать таким образом, что она будет реализовывать обязательные аргументы функции Создать базового класса.

  2. Предоставляет функции-члены обработчика сообщений и записи сообщение-сопоставления, чтобы изменить поведение элемента управления в ответ на определенные сообщения windows.См. раздел Сопоставление сообщений с функциями.

  3. Предоставление новых функций-членов, чтобы расширить функциональные возможности элемента управления (необязательно).

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

Задать пользовательский производный элемент управления в диалоговом окне

  1. Внедрение объект производного класса элемента управления в объявлении пользовательского производного класса диалогового окна.

  2. Переопределить функцию-член OnInitDialog в классе диалогового окна, чтобы вызвать функцию-член SubclassDlgItem для производного элемента управления.

Подклассы SubclassDlgItem «динамически» элемент управления, созданный из шаблона диалогового окна.Если элемент управления динамически subclassed, обработчик в окна обработке некоторых сообщений в пределах своего собственного приложения, а затем передать оставшихся сообщений окна.Дополнительные сведения см. в разделе SubclassDlgItem функции-члена класса CWnd в справочнике по MFC.Следующий пример показывает, как можно написать переопределение OnInitDialog для вызова SubclassDlgItem:

BOOL CSubDialog::OnInitDialog()
{
   CDialog::OnInitDialog();

   m_wndMyBtn.SubclassDlgItem(IDC_MYBTN, this);

   return TRUE;
}

Поскольку производный элемент управления внедрен в классе диалогового окна, он будет создан, когда диалоговое окно создания и оно будет удалено, когда диалоговое окно будет удалено.Сравните этот код в примере в Добавление элементов управления вручную.

См. также

Ссылки

Создание и использование элементов управления

Основные понятия

Элементы управления (MFC)