Derivazione dei controlli da un controllo standard

Come in qualsiasi CWndclasse derivata da, è possibile modificare il comportamento di un controllo derivando una nuova classe da una classe di controllo esistente.

Per creare una classe del controllo derivata

  1. Derivare la classe da una classe di controllo esistente ed eventualmente per eseguire l'override della funzione di creazione di un membro in modo che fornisca gli argomenti necessari alla funzione di Create della classe base.

  2. Fornire la funzione membro per la gestione dei messaggi e le voci della mappa messaggi per modificare il comportamento del controllo in risposta ai messaggi specifici di windows.Per informazioni, vedere Mapping di messaggi a funzioni.

  3. Fornire nuove funzioni membro per estendere la funzionalità del controllo (facoltativo).

Utilizzo di un controllo derivato in una finestra di dialogo richiede un lavoro aggiuntivo.I tipi e le posizioni di controlli in una finestra di dialogo in genere specificati in una risorsa della finestra di dialogo-modello.Se si crea una classe del controllo derivata, non è possibile specificarlo in un modello di finestra di dialogo poiché il compilatore di risorse non conosce alcun effetto sulla classe derivata.

  1. Importare un oggetto della classe del controllo derivata nella dichiarazione della classe derivata della finestra di dialogo.

  2. Eseguire l'override della funzione membro di OnInitDialog nella classe della finestra di dialogo per chiamare la funzione membro di SubclassDlgItem per il controllo derivato.

Sottoclassi diSubclassDlgItem “in„ un controllo creato da un modello di finestra di dialogo.Quando un controllo è dinamicamente sottoclassato, agganciate in windows, elaborate alcuni messaggi all'interno dell'applicazione, quindi passare i messaggi rimanenti a finestre.Per ulteriori informazioni, vedere la funzione membro di SubclassDlgItem di classe CWndin riferimenti alla libreria MFC.Nell'esempio seguente viene illustrato come scrivere un override di OnInitDialog per chiamare SubclassDlgItem:

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

   m_wndMyBtn.SubclassDlgItem(IDC_MYBTN, this);

   return TRUE;
}

Poiché il controllo derivato è incorporato nella classe della finestra di dialogo, sarà costruito quando la finestra di dialogo viene costruita e viene distrutto quando la finestra di dialogo viene eliminato.Confrontare questo codice riportato in Aggiunta di controlli a mano.

Vedere anche

Riferimenti

Utilizzando e l'utilizzo dei controlli

Concetti

Controlli (MFC)