2009-06-07 14 views
18

Questa è la mia prima applicazione MFC lontana da VC6 e mi sento un po 'stupida:VS 2008, MFC: aggiungere OnInitDialog - come?

Come si aggiunge il gestore OnInitDialog? (So come aggiungerlo manualmente, ma questo è un problema a lungo termine).

facendo doppio clic sulla finestra di dialogo - niente. tasto destro del mouse sulla finestra di dialogo - "aggiungi gestore eventi" è disabilitato. Proprietà - Messaggi ha messaggi "normali", ma non WM_INITDIALOG Proprietà - Eventi detiene solo le notifiche provenienti da controlli contenuti pulsante destro del mouse in vista della classe - "Aggiungi .." ha solo funzioni e variabili

graffi dirigono

[modifica] d'oh - si tratta di una funzione virtuale in MFC, ma ancora ...

risposta

32

non sento stupido, mi ci sono voluti per sempre di conoscere questo quando mi sono trasferito da VC6 a VS2008!

ogni caso, e anche per il mio riferimento, qui sono i passi complete per l'aggiunta di una finestra di dialogo e l'override del metodo OnInitDialog:

  1. Seleziona Visualizzazione risorse ed espandere il file RC.
  2. Fare clic con il pulsante destro del mouse sulla voce Dialog nella visualizzazione struttura e selezionare Inserisci finestra di dialogo.
  3. Selezionare la finestra Proprietà. (Nota: se non vedi questa finestra, selezionare la Visualizza>Altre finestre>Finestra Proprietà voce di di menu.)
  4. Negli Proprietà finestra, impostare l'ID per la finestra di dialogo, ad esempio, IDD_MYDIALOG.
  5. Fare clic con il pulsante destro del mouse nella finestra di dialogo dell'editor risorse e selezionare Aggiungi classe. Nota: se si dispone di IE8 installato, ciò potrebbe produrre un errore Script di Internet Explorer. Vedere this blog post per i dettagli su come correggere questo.
  6. Nella finestra di dialogoMFC Class Wizard, digitare il nome della classe, per esempio, CMyDialog, selezionare CDialog come classe base, quindi premere Fine . Ciò creerà i file denominati MyDialog.cpp e MyDialog.h e li aggiungerà al progetto.

l'override del metodo OnInitDialog nella classe CMyDialog:

  1. Aprire il file MyDialog.h.
  2. Selezionare la finestra Proprietà.
  3. Posizionare il cursore sulla riga che legge class CMyDialog : public CDialog.(La parte superiore della finestra Proprietà dovrebbe mostrare "CMyDialog VCCodeClass" -. Questo è importante, perché i Proprietà finestra è altamente sensibile al contesto, e si ottiene diverse opzioni a seconda della posizione del cursore nell'editor)
  4. Fare clic sull'icona Ignora nella finestra Proprietà.
  5. Scorri verso il basso nella finestra delle proprietà per trovare OnInitDialog.
  6. Fare clic sulla freccia giù per questa voce e selezionare <Aggiungi> OnInitDialog. Questo dovrebbe creare la tua funzione CMyDialog::OnInitDialog.

Spero che questo aiuti!

+0

Volevo solo dire che questo mi è sfuggito per molto tempo anche dopo la migrazione a VS2008 da VC6. Ci vuole un po 'per abituarsi. – adzm

+0

Trovato! :-D Aiuta sempre a sapere che non sei solo. – peterchen

1

Sembra che non sia nemmeno necessario aprire il file di intestazione e fare il pasticcio posizionando il cursore ... Dopo aver creato la classe, selezionare la classe nel riquadro ClassView ed è possibile modificare le sostituzioni/i messaggi/gli eventi nella Proprietà riquadro come descritto sopra.

+1

Cosa aggiunge alla risposta accettata? – EWit

+1

Poiché non è necessario aprire il file di intestazione e gingillare con il posizionamento del cursore sulla riga di codice corretta per visualizzare correttamente il riquadro delle proprietà. – wayne

Problemi correlati