CDialog

La classe CDialog è la classe base utilizzata per la visualizzazione di finestre di dialogo sullo schermo. Finestre di dialogo sono di due tipi: modali e non modali. Una finestra di dialogo modale deve essere chiusa dall'utente prima che l'applicazione continua. Una finestra di dialogo non modali permette all'utente di visualizzare la finestra di dialogo e di tornare a un'altra attività senza l'annullamento o la rimozione di finestra di dialogo.

Un oggetto CDialog è una combinazione di un modello di dialogo e un CDialog-classe derivata. Utilizzare l'editor di dialogo per creare il modello della finestra di dialogo e memorizzarlo in una risorsa, quindi utilizzare ClassWizard per creare una classe derivata da CDialog.

Una finestra di dialogo, come una qualsiasi finestra, riceve i messaggi da Windows. In una finestra di dialogo, sono particolarmente interessato nel trattamento dei messaggi di notifica dei controlli della finestra di dialogo, dato che questo è come l'utente interagisce con la finestra di dialogo. ClassWizard passa attraverso i potenziali messaggi generati da ogni controllo nella finestra di dialogo, e si possono selezionare i messaggi che si desidera gestire. ClassWizard aggiunge quindi le voci di mappa messaggi appropriati e le funzioni membro di gestione dei messaggi per la nuova classe per te. Solo bisogno di scrivere codice specifico dell'applicazione in funzioni membro.

Se si preferisce, si può sempre scrivere le voci della mappa messaggi e funzioni membro te stesso anziché utilizzare ClassWizard.

In tutti, ma nella finestra di dialogo più banale, aggiungere le variabili membro alla classe derivata di dialogo per memorizzare i dati inseriti nei controlli della finestra di dialogo da parte dell'utente o per visualizzare i dati dell'utente. ClassWizard accede attraverso i controlli nella finestra di dialogo che possa essere associato a dati e viene richiesto di creare una variabile membro per ogni controllo. Allo stesso tempo, scegliere un tipo di variabile e ammissibile intervallo di valori per ciascuna variabile. ClassWizard aggiunge le variabili membro alla classe derivata di dialogo.

ClassWizard poi scrive una mappa di dati per gestire automaticamente lo scambio di dati tra le variabili membro e controlli della finestra di dialogo. La mappa dei dati fornisce funzioni di inizializzare i controlli nella finestra di dialogo con i valori appropriati, recuperare i dati e convalidare i dati.

Per creare una finestra di dialogo modale, costruire un oggetto sullo stack utilizzando il costruttore per la classe derivata di dialogo e quindi chiamare DoModal per creare la finestra di dialogo e i relativi controlli. Se si desidera creare una finestra di dialogo non modale, chiamare Create nel costruttore della classe di dialogo.

È anche possibile creare un modello in memoria utilizzando un DLGTEMPLATE dati strutturare come descritto nella documentazione di Win32 SDK. Dopo che si costruisce un oggetto CDialog , chiamare CreateIndirect per creare una finestra di dialogo non modali oppure chiamare InitModalIndirect e DoModal per creare una finestra di dialogo modale.

ClassWizard scrive mappa scambio e la convalida dei dati in un override del CWnd:: DoDataExchange che ClassWizard aggiunge alla nuova classe di dialogo. Per ulteriori informazioni sulla funzionalità di scambio e la convalida, vedere la funzione membro DoDataExchange in CWnd.

Sia il programmatore e il quadro chiamare DoDataExchange indirettamente tramite una chiamata a CWnd::UpdateData.

Il framework chiama UpdateData quando l'utente fa clic sul pulsante OK per chiudere una finestra di dialogo modale. (I dati non viene recuperati se si fa clic sul pulsante Annulla.) L'implementazione predefinita di OnInitDialog chiama anche UpdateData per impostare i valori iniziali dei controlli. Solitamente a override OnInitDialog per inizializzare ulteriori controlli. OnInitDialog viene chiamato dopo che tutti i controlli della finestra di dialogo vengono creati e poco prima la finestra di dialogo viene visualizzata la casella.

È possibile chiamare CWnd::UpdateData in qualsiasi momento durante l'esecuzione di una finestra di dialogo modale o non modale.

Se si sviluppa una dialogo a mano, aggiungere le variabili membro necessarie alla classe derivata di dialogo te ed è aggiungere funzioni membro per impostare o ottenere questi valori.

Per ulteriori informazioni su ClassWizard, vedere ClassWizard usando il manuale del programmatore di Visual C++.

Chiamata CWinApp::SetDialogBkColor per impostare il colore di sfondo per le finestre di dialogo nell'applicazione.

Una finestra di dialogo modale si chiude automaticamente quando l'utente preme i pulsanti OK o su Annulla o quando il codice chiama la funzione membro EndDialog.

Quando si implementa una finestra di dialogo non modali, sempre di eseguire l'override della funzione membro OnCancel e chiamare DestroyWindow dal suo interno. Non chiamare la classe base CDialog::OnCancel, poiché chiama EndDialog, che renderà la finestra di dialogo invisibile ma non distruggerlo. Si anche devono eseguire l'override di PostNcDestroy per le finestre di dialogo non modali per eliminare questo, dal momento che le finestre di dialogo non modali solitamente vengono allocati con il nuovo. Finestre di dialogo modali sono normalmente costruiti sul telaio e non hanno bisogno di pulitura PostNcDestroy.

Per ulteriori informazioni su CDialog, vedere l'articolo Dialog Box argomenti nel manuale del programmatore di Visual C++.

# include lt;afxwin.h>

Membri della classeClasse base | Gerarchia Chart

Samples    MFC Sample DBFETCH MFC Sample DLGCBR32 MFC Sample DLGTEMPL MFC Sample EXTBIND MFC Sample FTPTREE MFC Sample HELLO MFC Sample MDIBIND MFC Sample VCTERM

Index