INFORMAZIONI: Creazione di una finestra di dialogo con librerie MFC

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
Questo articolo è stato archiviato. L’articolo, quindi, viene offerto “così come è” e non verrà più aggiornato.
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();   }		
Sommario
kbinf 1.00 1.50 2,00 2.10 2.50 2.51 2.52 3.00 3.10 4.00

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 103788 - Ultima revisione: 12/04/2015 09:42:20 - Revisione: 3.1

Microsoft Foundation Class Library 4.2

  • kbnosurvey kbarchive kbmt kbdlg kbinfo kbuidesign KB103788 KbMtit
Feedback