Classe CDialog

Classe di base utilizzata per la visualizzazione delle finestre di dialogo sullo schermo.

Sintassi

class CDialog : public CWnd

Membri

Costruttori pubblici

Nome Descrizione
CDialog::CDialog Costruisce un oggetto CDialog.

Metodi pubblici

Nome Descrizione
CDialog::Create Inizializza l'oggetto CDialog. Crea una finestra di dialogo senza modalità e la collega all'oggetto CDialog .
CDialog::CreateIndirect Crea una finestra di dialogo senza modalità da un modello di finestra di dialogo in memoria (non basato su risorse).
CDialog::D oModal Chiama una finestra di dialogo modale e restituisce al termine.
CDialog::EndDialog Chiude una finestra di dialogo modale.
CDialog::GetDefID Ottiene l'ID del controllo pushbutton predefinito per una finestra di dialogo.
CDialog::GotoDlgCtrl Sposta lo stato attivo su un controllo della finestra di dialogo specificato nella finestra di dialogo.
CDialog::InitModalIndirect Crea una finestra di dialogo modale da un modello di finestra di dialogo in memoria (non basato sulle risorse). I parametri vengono archiviati fino a quando non viene chiamata la funzione DoModal .
CDialog::MapDialogRect Converte le unità di finestra di dialogo di un rettangolo in unità schermo.
CDialog::NextDlgCtrl Sposta lo stato attivo sul controllo successivo della finestra di dialogo nella finestra di dialogo.
CDialog::OnInitDialog Eseguire l'override per aumentare l'inizializzazione della finestra di dialogo.
CDialog::OnSetFont Eseguire l'override per specificare il tipo di carattere che un controllo finestra di dialogo deve utilizzare quando disegna testo.
CDialog::P revDlgCtrl Sposta lo stato attivo sul controllo precedente della finestra di dialogo nella finestra di dialogo.
CDialog::SetDefID Modifica il controllo pushbutton predefinito per una finestra di dialogo in un pulsante di push specificato.
CDialog::SetHelpID Imposta un ID guida sensibile al contesto per la finestra di dialogo.

Metodi protetti

Nome Descrizione
CDialog::OnCancel Eseguire l'override per eseguire l'azione Annulla pulsante o ESC. Il valore predefinito chiude la finestra di dialogo e DoModal restituisce IDCANCEL.
CDialog::OnOK Eseguire l'override per eseguire l'azione del pulsante OK in una finestra di dialogo modale. Il valore predefinito chiude la finestra di dialogo e DoModal restituisce IDOK.

Osservazioni:

Le finestre di dialogo sono di due tipi: modale e modeless. Prima che l'applicazione continui, è necessario chiudere una finestra di dialogo modale. Una finestra di dialogo senza modalità consente all'utente di visualizzare la finestra di dialogo e tornare a un'altra attività senza annullare o rimuovere la finestra di dialogo.

Un CDialog oggetto è una combinazione di un modello di dialogo e di una CDialogclasse derivata da . Usare l'editor della finestra di dialogo per creare il modello di finestra di dialogo e archiviarlo in una risorsa, quindi usare la procedura guidata Aggiungi classe per creare una classe derivata da CDialog.

Una finestra di dialogo, come qualsiasi altra finestra, riceve messaggi da Windows. In una finestra di dialogo, si è particolarmente interessati a gestire i messaggi di notifica dai controlli della finestra di dialogo, poiché è così che l'utente interagisce con la finestra di dialogo. Utilizzare la Creazione guidata classi per selezionare i messaggi che si desidera gestire e aggiungerà automaticamente le voci appropriate della mappa messaggi e le funzioni membro del gestore di messaggi alla classe . È sufficiente scrivere codice specifico dell'applicazione nelle funzioni membro del gestore.

Se si preferisce, è sempre possibile scrivere manualmente voci e funzioni membro della mappa messaggi.

Nella finestra di dialogo più semplice, tuttavia, si aggiungono variabili membro alla classe di dialogo derivata per archiviare i dati immessi nei controlli della finestra di dialogo da parte dell'utente o per visualizzare i dati per l'utente. È possibile usare la procedura guidata Aggiungi variabile per creare variabili membro e associarle ai controlli. Allo stesso tempo, si sceglie un tipo di variabile e l'intervallo di valori consentiti per ogni variabile. La procedura guidata per il codice aggiunge le variabili membro alla classe del dialogo derivata.

Viene generata una mappa dati per gestire automaticamente lo scambio di dati tra le variabili membro e i controlli della finestra di dialogo. La mappa dati fornisce funzioni che inizializzano i controlli nella finestra di dialogo con i valori appropriati, recuperano i dati e convalidano i dati.

Per creare una finestra di dialogo modale, creare un oggetto nello stack usando il costruttore per la classe di dialogo derivata e quindi chiamare DoModal per creare la finestra di dialogo e i relativi controlli. Se si desidera creare un dialogo senza modalità, chiamare Create nel costruttore della classe del dialogo.

È anche possibile creare un modello in memoria usando una struttura di dati DLGTEMPLATE come descritto in Windows SDK. Dopo aver creato un CDialog oggetto, chiamare CreateIndirect per creare una finestra di dialogo senza modalità oppure chiamare InitModalIndirect e DoModal per creare una finestra di dialogo modale.

La mappa dei dati di scambio e convalida viene scritta in un override di CWnd::DoDataExchange che viene aggiunto alla nuova classe del dialogo. Per altre informazioni sulla funzionalità di scambio e convalida, vedere la funzione membro DoDataExchange in CWnd .

Sia il programmatore che il framework chiamano 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 vengono recuperati se si fa clic sul pulsante Annulla. L'implementazione predefinita di OnInitDialog chiama UpdateData anche per impostare i valori iniziali dei controlli. In genere si esegue l'override OnInitDialog per inizializzare ulteriormente i controlli. OnInitDialog viene chiamato dopo la creazione di tutti i controlli della finestra di dialogo e subito prima della visualizzazione della finestra di dialogo.

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

Se si sviluppa manualmente una finestra di dialogo, si aggiungono manualmente le variabili membro necessarie alla classe della finestra di dialogo derivata e si aggiungono funzioni membro per impostare o ottenere questi valori.

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

Quando si implementa una finestra di dialogo senza modalità, eseguire sempre l'override della OnCancel funzione membro e chiamare DestroyWindow dall'interno di essa. Non chiamare la classe CDialog::OnCanceldi base , perché chiama EndDialog, che renderà invisibile la finestra di dialogo, ma non lo distruggerà. È anche consigliabile eseguire l'override PostNcDestroy per le finestre di dialogo senza modalità per eliminare this, poiché le finestre di dialogo senza modalità vengono in genere allocate con new. Le finestre di dialogo modali vengono in genere costruite sul frame e non richiedono la PostNcDestroy pulizia.

Per altre informazioni su CDialog, vedere Finestre di dialogo.

Gerarchia di ereditarietà

CObject

CCmdTarget

CWnd

CDialog

Requisiti

Intestazione: afxwin.h

CDialog::CDialog

Per costruire una finestra di dialogo modale basata su risorse, chiamare una forma pubblica del costruttore.

explicit CDialog(
    LPCTSTR lpszTemplateName,
    CWnd* pParentWnd = NULL);

explicit CDialog(
    UINT nIDTemplate,
    CWnd* pParentWnd = NULL);

CDialog();

Parametri

lpszTemplateName
Contiene una stringa con terminazione Null che corrisponde al nome di una risorsa modello di finestra di dialogo.

nIDTemplate
Contiene il numero ID di una risorsa modello di finestra di dialogo.

pParentWnd
Punta all'oggetto finestra padre o proprietario (di tipo CWnd) a cui appartiene l'oggetto dialog. Se è NULL, la finestra padre dell'oggetto finestra di dialogo viene impostata sulla finestra principale dell'applicazione.

Osservazioni:

Una forma del costruttore consente di accedere alla risorsa della finestra di dialogo in base al nome del modello. L'altro costruttore fornisce l'accesso in base al numero ID modello, in genere con un prefisso IDD_ (ad esempio, IDD_DIALOG1).

Per costruire una finestra di dialogo modale da un modello in memoria, richiamare prima il costruttore senza parametri, protetto e quindi chiamare InitModalIndirect.

Dopo aver creato una finestra di dialogo modale con uno dei metodi precedenti, chiamare DoModal.

Per costruire una finestra di dialogo senza modalità, utilizzare il formato protetto del CDialog costruttore. Il costruttore è protetto perché è necessario derivare la propria classe della finestra di dialogo per implementare una finestra di dialogo senza modalità. La costruzione di una finestra di dialogo senza modalità è un processo in due passaggi. Chiamare prima il costruttore; chiamare quindi la Create funzione membro per creare una finestra di dialogo basata su risorse o chiamare CreateIndirect per creare la finestra di dialogo da un modello in memoria.

CDialog::Create

Chiamare Create per creare una finestra di dialogo senza modalità usando un modello di finestra di dialogo da una risorsa.

virtual BOOL Create(
    LPCTSTR lpszTemplateName,
    CWnd* pParentWnd = NULL);

virtual BOOL Create(
    UINT nIDTemplate,
    CWnd* pParentWnd = NULL);

Parametri

lpszTemplateName
Contiene una stringa con terminazione Null che corrisponde al nome di una risorsa modello di finestra di dialogo.

pParentWnd
Punta all'oggetto finestra padre (di tipo CWnd) a cui appartiene l'oggetto dialog. Se è NULL, la finestra padre dell'oggetto finestra di dialogo viene impostata sulla finestra principale dell'applicazione.

nIDTemplate
Contiene il numero ID di una risorsa modello di finestra di dialogo.

Valore restituito

Entrambi i moduli restituiscono un valore diverso da zero se la creazione e l'inizializzazione della finestra di dialogo hanno avuto esito positivo; in caso contrario, 0.

Osservazioni:

È possibile inserire la chiamata a Create all'interno del costruttore o chiamarla dopo che il costruttore viene richiamato.

Per accedere alla risorsa modello della finestra di dialogo sono disponibili due forme della Create funzione membro, ad esempio IDD_DIALOG1.

Per entrambe le forme, passare un puntatore all'oggetto finestra padre. Se pParentWnd è NULL, la finestra di dialogo verrà creata con la relativa finestra padre o proprietario impostata sulla finestra principale dell'applicazione.

La Create funzione membro restituisce immediatamente dopo la creazione della finestra di dialogo.

Usare lo stile WS_VISIBLE nel modello della finestra di dialogo se la finestra di dialogo deve essere visualizzata quando viene creata la finestra padre. In caso contrario, è necessario chiamare ShowWindow. Per altri stili di finestra di dialogo e la relativa applicazione, vedi la struttura DLGTEMPLATE in Windows SDK e stili di finestra nel riferimento MFC.

Usare la CWnd::DestroyWindow funzione per eliminare definitivamente una finestra di dialogo creata dalla Create funzione .

Esempio

void CMyDialog::OnMenuShowSimpleDialog()
{
   //m_pSimpleDialog initialized to NULL in the constructor of CMyDialog class
   m_pSimpleDlg = new CSimpleDlg();
   //Check if new succeeded and we got a valid pointer to a dialog object
   if (m_pSimpleDlg != NULL)
   {
      BOOL ret = m_pSimpleDlg->Create(IDD_SIMPLEDIALOG, this);

      if (!ret) //Create failed.
      {
         AfxMessageBox(_T("Error creating Dialog"));
      }

      m_pSimpleDlg->ShowWindow(SW_SHOW);
   }
   else
   {
      AfxMessageBox(_T("Error Creating Dialog Object"));
   }
}

CDialog::CreateIndirect

Chiamare questa funzione membro per creare una finestra di dialogo senza modalità da un modello di finestra di dialogo in memoria.

virtual BOOL CreateIndirect(
    LPCDLGTEMPLATE lpDialogTemplate,
    CWnd* pParentWnd = NULL,
    void* lpDialogInit = NULL);

virtual BOOL CreateIndirect(
    HGLOBAL hDialogTemplate,
    CWnd* pParentWnd = NULL);

Parametri

lpDialogTemplate
Punta alla memoria contenente un modello di finestra di dialogo usato per creare la finestra di dialogo. Questo modello è sotto forma di una struttura DLGTEMPLATE e informazioni di controllo, come descritto in Windows SDK.

pParentWnd
Punta all'oggetto finestra padre dell'oggetto dialog (di tipo CWnd). Se è NULL, la finestra padre dell'oggetto finestra di dialogo viene impostata sulla finestra principale dell'applicazione.

lpDialogInit
Punta a una risorsa DLGINIT.

hDialogTemplate
Contiene un handle per la memoria globale contenente un modello di finestra di dialogo. Questo modello è sotto forma di struttura DLGTEMPLATE e dati per ogni controllo nella finestra di dialogo.

Valore restituito

Diverso da zero se la finestra di dialogo è stata creata e inizializzata correttamente; in caso contrario, 0.

Osservazioni:

La CreateIndirect funzione membro restituisce immediatamente dopo la creazione della finestra di dialogo.

Usare lo stile WS_VISIBLE nel modello della finestra di dialogo se la finestra di dialogo deve essere visualizzata quando viene creata la finestra padre. In caso contrario, è necessario chiamare ShowWindow per fare in modo che venga visualizzato. Per altre informazioni su come specificare altri stili di finestra di dialogo nel modello, vedere la struttura DLGTEMPLATE in Windows SDK.

Usare la CWnd::DestroyWindow funzione per eliminare definitivamente una finestra di dialogo creata dalla CreateIndirect funzione .

Le finestre di dialogo che contengono controlli ActiveX richiedono informazioni aggiuntive fornite in una risorsa DLGINIT.

CDialog::D oModal

Chiamare questa funzione membro per richiamare la finestra di dialogo modale e restituire il risultato della finestra di dialogo al termine.

virtual INT_PTR DoModal();

Valore restituito

Valore int che specifica il valore del parametro nResult passato alla funzione membro CDialog::EndDialog , utilizzata per chiudere la finestra di dialogo. Il valore restituito è -1 se la funzione non è riuscita a creare la finestra di dialogo o IDABORT se si è verificato un altro errore, nel qual caso la finestra di output conterrà informazioni sull'errore da GetLastError.

Osservazioni:

Questa funzione membro gestisce tutte le interazioni con l'utente mentre la finestra di dialogo è attiva. Questo è ciò che rende modale la finestra di dialogo; ovvero, l'utente non può interagire con altre finestre finché la finestra di dialogo non viene chiusa.

Se l'utente fa clic su uno dei pulsanti di scelta rapida nella finestra di dialogo, ad esempio OK o Annulla, viene chiamata una funzione membro del gestore messaggi, ad esempio OnOK o OnCancel, per tentare di chiudere la finestra di dialogo. La funzione membro predefinita OnOK convaliderà e aggiornerà i dati della finestra di dialogo e chiuderà la finestra di dialogo con IDOK risultato e la funzione membro predefinita OnCancel chiuderà la finestra di dialogo con IDCANCEL risultato senza convalidare o aggiornare i dati della finestra di dialogo. È possibile eseguire l'override di queste funzioni del gestore di messaggi per modificarne il comportamento.

Nota

PreTranslateMessage viene ora chiamato per l'elaborazione dei messaggi della finestra di dialogo modale.

Esempio

void CMyDialog::OnMenuShowAboutDialog()
{
   // Construct the dialog box passing the
   // ID of the dialog template resource
   CDialog aboutDlg(IDD_ABOUTBOX);

   // Create and show the dialog box
   INT_PTR nRet = -1;
   nRet = aboutDlg.DoModal();

   // Handle the return value from DoModal
   switch (nRet)
   {
   case -1:
      AfxMessageBox(_T("Dialog box could not be created!"));
      break;
   case IDABORT:
      // Do something
      break;
   case IDOK:
      // Do something
      break;
   case IDCANCEL:
      // Do something
      break;
   default:
      // Do something
      break;
   };
}

CDialog::EndDialog

Chiamare questa funzione membro per terminare una finestra di dialogo modale.

void EndDialog(int nResult);

Parametri

nResult
Contiene il valore da restituire dalla finestra di dialogo al chiamante di DoModal.

Osservazioni:

Questa funzione membro restituisce nResult come valore restituito di DoModal. È necessario usare la funzione per completare l'elaborazione EndDialog ogni volta che viene creata una finestra di dialogo modale.

È possibile chiamare EndDialog in qualsiasi momento, anche in OnInitDialog, nel qual caso è necessario chiudere la finestra di dialogo prima che venga visualizzata o prima che venga impostato lo stato attivo di input.

EndDialog non chiude immediatamente la finestra di dialogo. Imposta invece un flag che indirizza la finestra di dialogo alla chiusura non appena viene restituito il gestore di messaggi corrente.

Esempio

void CMyDialog::OnMenuShowSimpleModal()
{
   CSimpleDlg myDlg;
   INT_PTR nRet = myDlg.DoModal();

   if (nRet == IDOK || nRet == 5)
   {
      AfxMessageBox(_T("Dialog closed successfully"));
   }
}

 

void CSimpleDlg::OnRButtonUp(UINT nFlags, CPoint point)
{
   UNREFERENCED_PARAMETER(nFlags);
   // Do something

   int nRet = point.x; // Just any value would do!
   EndDialog(nRet);    // This value is returned by DoModal!

   // Do something

   return; // Dialog closed and DoModal returns only here!
}

CDialog::GetDefID

Chiamare la GetDefID funzione membro per ottenere l'ID del controllo pushbutton predefinito per una finestra di dialogo.

DWORD GetDefID() const;

Valore restituito

Valore a 32 bit ( DWORD). Se il pushbutton predefinito ha un valore ID, la parola di ordine elevato contiene DC_HASDEFID e la parola con ordine basso contiene il valore ID. Se il pushbutton predefinito non ha un valore ID, il valore restituito è 0.

Osservazioni:

Si tratta in genere di un pulsante OK.

CDialog::GotoDlgCtrl

Sposta lo stato attivo sul controllo specificato nella finestra di dialogo.

void GotoDlgCtrl(CWnd* pWndCtrl);

Parametri

pWndCtrl
Identifica la finestra (controllo) che deve ricevere lo stato attivo.

Osservazioni:

Per ottenere un puntatore al controllo (finestra figlio) da passare come pWndCtrl, chiamare la CWnd::GetDlgItem funzione membro, che restituisce un puntatore a un oggetto CWnd.

Esempio

Vedere l'esempio per CWnd::GetDlgItem.

CDialog::InitModalIndirect

Chiamare questa funzione membro per inizializzare un oggetto finestra di dialogo modale usando un modello di finestra di dialogo costruito in memoria.

BOOL InitModalIndirect(
    LPCDLGTEMPLATE lpDialogTemplate,
    CWnd* pParentWnd = NULL,
    void* lpDialogInit = NULL);

    BOOL InitModalIndirect(
    HGLOBAL hDialogTemplate,
    CWnd* pParentWnd = NULL);

Parametri

lpDialogTemplate
Punta alla memoria contenente un modello di finestra di dialogo usato per creare la finestra di dialogo. Questo modello è sotto forma di una struttura DLGTEMPLATE e informazioni di controllo, come descritto in Windows SDK.

hDialogTemplate
Contiene un handle per la memoria globale contenente un modello di finestra di dialogo. Questo modello è sotto forma di struttura DLGTEMPLATE e dati per ogni controllo nella finestra di dialogo.

pParentWnd
Punta all'oggetto finestra padre o proprietario (di tipo CWnd) a cui appartiene l'oggetto dialog. Se è NULL, la finestra padre dell'oggetto finestra di dialogo viene impostata sulla finestra principale dell'applicazione.

lpDialogInit
Punta a una risorsa DLGINIT.

Valore restituito

Diverso da zero se l'oggetto dialogo è stato creato e inizializzato correttamente; in caso contrario, 0.

Osservazioni:

Per creare una finestra di dialogo modale indirettamente, allocare innanzitutto un blocco globale di memoria e riempirlo con il modello della finestra di dialogo. Chiamare quindi il costruttore vuoto CDialog per costruire l'oggetto finestra di dialogo. Chiamare InitModalIndirect quindi per archiviare l'handle nel modello di finestra di dialogo in memoria. La finestra di dialogo Windows viene creata e visualizzata in un secondo momento, quando viene chiamata la funzione membro DoModal .

Le finestre di dialogo che contengono controlli ActiveX richiedono informazioni aggiuntive fornite in una risorsa DLGINIT.

CDialog::MapDialogRect

Chiamare per convertire le unità di finestra di dialogo di un rettangolo in unità schermo.

void MapDialogRect(LPRECT lpRect) const;

Parametri

lpRect
Punta a una struttura RECT o a un oggetto CRect che contiene le coordinate della finestra di dialogo da convertire.

Osservazioni:

Le unità di finestra di dialogo sono indicate in termini di unità base della finestra di dialogo corrente derivata dalla larghezza media e dall'altezza dei caratteri nel tipo di carattere utilizzato per il testo della finestra di dialogo. Un'unità orizzontale è un quarto dell'unità base della finestra di dialogo e un'unità verticale è un ottavo dell'unità di altezza di base della finestra di dialogo.

La GetDialogBaseUnits funzione Windows restituisce informazioni sulle dimensioni per il tipo di carattere di sistema, ma è possibile specificare un tipo di carattere diverso per ogni finestra di dialogo se si utilizza lo stile DS_SETFONT nel file di definizione della risorsa. La MapDialogRect funzione Windows utilizza il tipo di carattere appropriato per questa finestra di dialogo.

La MapDialogRect funzione membro sostituisce le unità di dialogo in lpRect con unità schermo (pixel) in modo che il rettangolo possa essere usato per creare una finestra di dialogo o posizionare un controllo all'interno di una casella.

CDialog::NextDlgCtrl

Sposta lo stato attivo sul controllo successivo nella finestra di dialogo.

void NextDlgCtrl() const;

Osservazioni:

Se lo stato attivo si trova all'ultimo controllo nella finestra di dialogo, passa al primo controllo.

CDialog::OnCancel

Il framework chiama questo metodo quando l'utente fa clic su Annulla o preme il tasto ESC in una finestra di dialogo modale o senza modalità.

virtual void OnCancel();

Osservazioni:

Eseguire l'override di questo metodo per eseguire azioni, ad esempio il ripristino di dati obsoleti, quando un utente chiude la finestra di dialogo facendo clic su Annulla o premendo esc. Il valore predefinito chiude una finestra di dialogo modale chiamando EndDialog e causando la restituzione di IDCANCEL da Parte di DoModal .

Se si implementa il pulsante Annulla in una finestra di dialogo senza modalità, è necessario eseguire l'override del OnCancel metodo e chiamare DestroyWindow all'interno di esso. Non chiamare il metodo della classe base, perché chiama EndDialog, che renderà invisibile la finestra di dialogo, ma non distruggerla.

Nota

Non è possibile eseguire l'override di questo metodo quando si utilizza un CFileDialog oggetto in un programma compilato in Windows XP. Per altre informazioni su CFileDialog, vedere Classe CFileDialog.

Esempio

void CSimpleDlg::OnCancel()
{
   // TODO: Add extra cleanup here

   // Ensure that you reset all the values back to the
   // ones before modification. This handler is called
   // when the user doesn't want to save the changes.

   if (AfxMessageBox(_T("Are you sure you want to abort the changes?"),
                     MB_YESNO) == IDNO)
   {
      // Give the user a chance if he has unknowingly hit the
      // Cancel button. If he says No, return. Don't reset. If
      // Yes, go ahead and reset the values and close the dialog.
      return;
   }

   m_nMyValue = m_nPrevValue;
   m_pMyString = NULL;

   CDialog::OnCancel();
}

CDialog::OnInitDialog

Questo metodo viene chiamato in risposta al WM_INITDIALOG messaggio.

virtual BOOL OnInitDialog();

Valore restituito

Specifica se l'applicazione ha impostato lo stato attivo sull'input su uno dei controlli nella finestra di dialogo. Se OnInitDialog restituisce un valore diverso da zero, Windows imposta lo stato attivo sull'input sul percorso predefinito, ovvero il primo controllo nella finestra di dialogo. L'applicazione può restituire 0 solo se ha impostato in modo esplicito lo stato attivo sull'input su uno dei controlli nella finestra di dialogo.

Osservazioni:

Windows invia il WM_INITDIALOG messaggio alla finestra di dialogo durante le chiamate Create, CreateIndirect o DoModal , che si verificano immediatamente prima della visualizzazione della finestra di dialogo.

Eseguire l'override di questo metodo se si desidera eseguire un'elaborazione speciale quando viene inizializzata la finestra di dialogo. Nella versione sottoposta a override chiamare prima la classe OnInitDialog di base ma ignorarne il valore restituito. In genere si tornerà TRUE dal metodo sottoposto a override.

Windows chiama la OnInitDialog funzione usando la routine standard della finestra di dialogo globale comune a tutte le finestre di dialogo della libreria di classi di Microsoft Foundation. Non chiama questa funzione tramite la mappa messaggi e pertanto non è necessaria una voce della mappa messaggi per questo metodo.

Nota

Non è possibile eseguire l'override di questo metodo quando si utilizza un CFileDialog oggetto in un programma compilato in Windows Vista o nei sistemi operativi successivi. Per altre informazioni sulle modifiche apportate a CFileDialog in Windows Vista e versioni successive, vedere Classe CFileDialog.

Esempio

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

   // TODO: Add extra initialization here
   m_cMyEdit.SetWindowText(_T("My Name")); // Initialize control values
   m_cMyList.ShowWindow(SW_HIDE);          // Show or hide a control, etc.

   return TRUE; // return TRUE unless you set the focus to a control
   // EXCEPTION: OCX Property Pages should return FALSE
}

CDialog::OnOK

Viene chiamato quando l'utente fa clic sul pulsante OK (il pulsante con IDOK).

virtual void OnOK();

Osservazioni:

Eseguire l'override di questo metodo per eseguire azioni quando viene attivato il pulsante OK . Se la finestra di dialogo include la convalida e lo scambio automatico dei dati, l'implementazione predefinita di questo metodo convalida i dati della finestra di dialogo e aggiorna le variabili appropriate nell'applicazione.

Se si implementa il pulsante OK in una finestra di dialogo senza modalità, è necessario eseguire l'override del OnOK metodo e chiamare DestroyWindow al suo interno. Non chiamare il metodo della classe base, perché chiama EndDialog che rende invisibile la finestra di dialogo, ma non lo elimina.

Nota

Non è possibile eseguire l'override di questo metodo quando si utilizza un CFileDialog oggetto in un programma compilato in Windows XP. Per altre informazioni su CFileDialog, vedere Classe CFileDialog.

Esempio

void CSimpleDlg::OnOK()
{
   // TODO: Add extra validation here

   // Ensure that your UI got the necessary input
   // from the user before closing the dialog. The
   // default OnOK will close this.
   if (m_nMyValue == 0) // Is a particular field still empty?
   {
      // Inform the user that he can't close the dialog without
      // entering the necessary values and don't close the
      // dialog.
      AfxMessageBox(_T("Please enter a value for MyValue"));
      return;
   }

   CDialog::OnOK(); // This will close the dialog and DoModal will return.
}

CDialog::OnSetFont

Specifica il tipo di carattere che verrà utilizzato da un controllo finestra di dialogo durante il disegno del testo.

Virtual void OnSetFont(CFont* pFont);

Parametri

pFont
[in] Specifica un puntatore al tipo di carattere che verrà utilizzato come tipo di carattere predefinito per tutti i controlli in questa finestra di dialogo.

Osservazioni:

La finestra di dialogo userà il tipo di carattere specificato come predefinito per tutti i relativi controlli.

L'editor di dialoghi imposta in genere il tipo di carattere della finestra di dialogo come parte della risorsa modello della finestra di dialogo.

Nota

Non è possibile eseguire l'override di questo metodo quando si utilizza un CFileDialog oggetto in un programma compilato in Windows Vista o nei sistemi operativi successivi. Per altre informazioni sulle modifiche apportate a CFileDialog in Windows Vista e versioni successive, vedere Classe CFileDialog.

CDialog::P revDlgCtrl

Imposta lo stato attivo sul controllo precedente nella finestra di dialogo.

void PrevDlgCtrl() const;

Osservazioni:

Se lo stato attivo si trova al primo controllo della finestra di dialogo, passa all'ultimo controllo della casella.

CDialog::SetDefID

Modifica il controllo pushbutton predefinito per una finestra di dialogo.

void SetDefID(UINT nID);

Parametri

nID
Specifica l'ID del controllo pushbutton che diventerà l'impostazione predefinita.

CDialog::SetHelpID

Imposta un ID guida sensibile al contesto per la finestra di dialogo.

void SetHelpID(UINT nIDR);

Parametri

NIDR
Specifica l'ID della Guida sensibile al contesto.

Vedi anche

DLGCBR32 di esempio MFC
DLGTEMPL di esempio MFC
Classe CWnd
Grafico della gerarchia