Udostępnij przez


Tworzenie kontrolek ze standardowej kontrolki

Podobnie jak w przypadku dowolnej klasy pochodnej CWnd, można zmodyfikować zachowanie kontrolki, wyprowadzając nową klasę z istniejącej klasy kontrolki.

Aby utworzyć pochodną klasę kontrolek

  1. Dziedzicz swoją klasę z istniejącej klasy kontrolki i opcjonalnie przesłoń funkcję składową Create, aby dostarczała niezbędne argumenty do funkcji Create w klasie bazowej.

  2. Podaj funkcje składowe programu obsługi komunikatów i wpisy mapy komunikatów, aby zmodyfikować zachowanie kontrolki w odpowiedzi na określone komunikaty systemu Windows. Zobacz Mapowanie komunikatów na funkcje.

  3. Udostępniaj nowe funkcje składowe, aby rozszerzyć funkcjonalność kontrolki (opcjonalnie).

Użycie pochodnej kontrolki w oknie dialogowym wymaga dodatkowej pracy. Typy i pozycje kontrolek w oknie dialogowym są zwykle określane w zasobie szablonu okna dialogowego. Jeśli tworzysz klasę kontrolki pochodnej, nie można jej określić w szablonie okna dialogowego, ponieważ kompilator zasobów nie wie nic o klasie pochodnej.

Aby umieścić kontrolkę pochodną w oknie dialogowym

  1. Umieść obiekt pochodnej klasy kontroli w deklaracji pochodnej klasy okna dialogowego.

  2. Zastąp członkowską funkcję OnInitDialog w swojej klasie okna dialogowego, aby wywołać członkowską funkcję SubclassDlgItem dla dziedziczonej kontrolki.

SubclassDlgItem "dynamicznie podklasuje" kontrolkę utworzoną na podstawie szablonu okna dialogowego. Gdy kontrolka jest dynamicznie podklasowana, należy podłączyć się do systemu Windows, przetworzyć niektóre komunikaty we własnej aplikacji, a następnie przekazać pozostałe komunikaty do systemu Windows. Aby uzyskać więcej informacji, zobacz funkcję składową SubclassDlgItem klasy CWnd w dokumentacji MFC. W poniższym przykładzie pokazano, jak można napisać przesłonięcie OnInitDialog, aby wywołać metodę SubclassDlgItem.

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

   m_wndMyBtn.SubclassDlgItem(IDC_MYBTN, this);

   return TRUE;
}

Ponieważ pochodna kontrolka jest osadzona w klasie okna dialogowego, zostanie ona skonstruowana podczas konstruowania okna dialogowego i zostanie zniszczona, gdy okno dialogowe zostanie zniszczone. Porównaj ten kod z przykładem w temacie Dodawanie kontrolek ręcznie.

Zobacz także

Tworzenie i używanie kontrolek
Sterowanie