INFORMAZIONI: Creazione di una finestra di dialogo con librerie MFC

Traduzione articoli Traduzione articoli
Identificativo articolo: 103788 - Visualizza i prodotti a cui si riferisce l?articolo.
In questo articolo viene illustrato come creare una finestra di dialogo non modale utilizzando una risorsa modello di finestra di dialogo utilizzando MFC.

Per creare una finestra di dialogo CModeless, deve essere seguita la procedura seguente:

  1. Creare una classe di finestra di dialogo derivata da CDialog ed eseguire l'override della funzione di membro Create() di CDialog. Ad esempio, potrebbe essere analogo al seguente codice:
          class CModeless: public CDialog
               {
                 .
                 .
                 .
                 public:
                     CModeless(){ }
                     BOOL Create(UINT nID, CWnd * pWnd)
                          { return CDialog::Create(nID,pWnd);}
                 .
                 .
                 .
               };
    				
    Nota: si potrebbe consentire a ClassWizard generare la classe finestra di dialogo e aggiungere semplicemente la funzione Create().
  2. Scrivere il codice per costruire un oggetto della classe finestra di dialogo e creare la finestra di dialogo. Ad esempio, se si dispone di una voce di menu che deve essere visualizzato nella finestra di dialogo, potrebbe essere analogo al seguente codice:
          void CMainFrame::OnModeless()
            {
                pdlg = new CModeless;
                pdlg->Create(IDD_DIALOG1,this);
            }
    				
    dove CMainFrame::pdlg Ŕ definita come:
    CModeless * pdlg;
    Nota: ╚ importante allocare l'oggetto dell'heap anzichÚ lo stack, se si desidera impedire che la finestra di dialogo non modale eliminata al termine della funzione.
  3. ╚ necessario chiamare CWnd::DestroyWindow() in OnCancel o ogni volta che la finestra di dialogo non modale deve essere eliminato.
          void CModeless::OnCancel()
          {
              DestroyWindow();
          }
    				
  4. Eseguire l'override CWnd::PostNcDestroy() nella classe di finestra di dialogo per eliminare l'oggetto casella di finestra di dialogo:
       virtual void CModeless::PostNcDestroy() {delete this;}
    				
    PostNcDestroy() Ŕ una funzione di membro virtuale della classe CWnd viene chiamata dalla funzione OnNcDestroy().
In genere una classe di finestra di dialogo non modale sovrascriverÓ il OnOK() e membro OnCancel() funzioni chiamare DestroyWindow() e non dovrÓ chiamare le funzioni di CDialog::OnOK() e CDialog::OnCancel() classe base. Le funzioni CDialog::OnOK() e CDialog::OnCancel() chiamano EndDialog(). EndDialog() deve essere chiamato solo quando si utilizza le finestre di dialogo a scelta obbligatoria.

Se si utilizza DDX (Dialog Data Exchange) e Dialog Data Validation (DDV), si Ŕ gestore OnOK() per la classe di finestra di dialogo potrebbe essere simile al seguente:
   void CModeless::OnOK()
   {
           if (!UpdateData(TRUE))
             {
               TRACE0("UpdateData failed during dialog termination\n");
               // The UpdateData routine will set focus to correct item
               return;
             }
           DestroyWindow();
   }
		
Espandi tutto | Chiudi tutto

ProprietÓ

Identificativo articolo: 103788 - Ultima modifica: martedý 21 novembre 2006 - Revisione: 3.1
Le informazioni in questo articolo si applicano a:
  • Microsoft Foundation Class Library 4.2áalle seguenti piattaforme
    • Microsoft Visual C++ 1.0 Professional Edition
    • Microsoft Visual C++ 1.5 Professional Edition
    • Microsoft Visual C++ 1.51
    • Microsoft Visual C++ 1.52 Professional Edition
    • Microsoft Visual C++ 1.0 Professional Edition
    • Microsoft Visual C++ 2.0 Professional Edition
    • Microsoft Visual C++ 2.1
    • Microsoft Visual C++ 4.0 Standard Edition
Chiavi:á
kbmt kbdlg kbinfo kbuidesign KB103788 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 103788
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.
Dichiarazione di non responsabilitÓ per articoli della Microsoft Knowledge Base su prodotti non pi¨ supportati
Questo articolo Ŕ stato scritto sui prodotti per cui Microsoft non offre pi¨ supporto. L?articolo, quindi, viene offerto ?cosý come Ŕ? e non verrÓ pi¨ aggiornato.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com