Derivazione di controlli da un controllo standard
Come con qualsiasi CWnd- classe derivata, è possibile modificare il comportamento di un controllo derivando una nuova classe da una classe del controllo esistente.
Per creare una classe del controllo derivata
Derivare la classe da una classe di controllo esistente ed eventualmente eseguire l'override della funzione membro di Crea in modo da fornire argomenti necessari alla funzione di Crea della classe base.
Fornire a funzioni 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.
Specificare le 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 dei controlli in una finestra di dialogo in genere vengono specificati in una risorsa 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 nothing sulla classe derivata.
Per inserire il controllo derivato in una finestra di dialogo
Importare un oggetto della classe del controllo derivata nella dichiarazione della classe derivata la finestra di dialogo.
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 della propria applicazione, quindi passare i messaggi rimanenti su finestre. Per ulteriori informazioni, vedere la funzione membro SubclassDlgItem della classe CWnd nel Riferimento 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 in una classe di finestre di dialogo, sarà costruito quando la finestra di dialogo viene costruita e viene distrutto quando la finestra di dialogo viene eliminato. Confrontare questo codice all'esempio in Aggiunta di controlli a mano.
Vedere anche
Riferimenti
Creazione e utilizzo di controlli