Sdílet prostřednictvím


Odvozování ovládacích prvků ze standardního ovládacího prvku

Stejně jako u jakékoli CWnd odvozené třídy můžete změnit chování ovládacího prvku odvozením nové třídy z existující třídy ovládacího prvku.

Vytvoření odvozené třídy ovládacího prvku

  1. Odvozujte třídu z existující třídy ovládacího prvku a volitelně přepište Create členskou funkci tak, aby poskytovala nezbytné argumenty pro funkci základní třídy Create .

  2. Zadejte členské funkce obslužné rutiny zpráv a položky mapy zpráv pro úpravu chování ovládacího prvku v reakci na konkrétní zprávy systému Windows. Viz Mapování zpráv na funkce.

  3. Zadejte nové členské funkce pro rozšíření funkčnosti ovládacího prvku (volitelné).

Použití odvozeného ovládacího prvku v dialogovém okně vyžaduje další práci. Typy a pozice ovládacích prvků v dialogovém okně se obvykle zadají v prostředku šablony dialogového okna. Pokud vytvoříte odvozenou třídu ovládacího prvku, nemůžete ji zadat v šabloně dialogového okna, protože kompilátor prostředků o odvozené třídě nic neví.

Umístění odvozeného ovládacího prvku do dialogového okna

  1. Vložte objekt odvozené třídy ovládacího prvku do deklarace odvozené třídy dialogového okna.

  2. OnInitDialog Přepsat člen funkce v dialogovém okně třídy volání SubclassDlgItem členské funkce pro odvozený ovládací prvek.

SubclassDlgItem "dynamicky podtřídy" ovládacího prvku vytvořeného ze šablony dialogového okna. Když je ovládací prvek dynamicky podtříděn, připojíte se k Windows, zpracujete některé zprávy ve vlastní aplikaci a pak předáte zbývající zprávy do Windows. Další informace naleznete v podtříděDlgItem členské funkce třídy CWnd v mfc Reference. Následující příklad ukazuje, jak můžete napsat přepsání OnInitDialog volání SubclassDlgItem:

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

   m_wndMyBtn.SubclassDlgItem(IDC_MYBTN, this);

   return TRUE;
}

Vzhledem k tomu, že odvozený ovládací prvek je vložen do třídy dialogového okna, bude vytvořen při vytváření dialogového okna a bude zničen při zničení dialogového okna. Porovnejte tento kód s příkladem při přidávání ovládacích prvků ručně.

Viz také

Příprava a použití ovládacích prvků
Ovládací prvky