2009-06-22 10 views
3

My CFormView abgeleitete Klasse ist wie folgt aufgebaut:MFC: OnInitialUpdate Funktion eines CFormView abgeleitete Klasse

class FormViewClass : public CFormView 
{ 
     ... 
     FormViewClass(); 
     void Initialize(); 
     virtual void OnInitialUpdate(); 
     ... 
}; 

Idealerweise möchte ich die Initialize() Funktion in den Körper des Konstruktors wie folgt aufrufen :

FormViewClass::FormViewClass() 
{ 
     ... 
     // originally I want to call Initialize function here 
     Initialize(); 
     ... 
} 

Allerdings wollen, da ich diese Funktion für alle die Initialisierung dieser Klasse verantwortlich zu sein, wenn, erstellt werden und es enthält MFC Initialisierungen wie Combobox, bearbeiten Kontrolle, Kontrollkästchen Kontrolle, Kontrolle Radio-Button, etc Objekte ., sollte ich stattdessen die Initiale anrufen ize() Funktion hier, wie ich dachte:

void FormViewClass::OnInitialUpdate() 
{ 
    // Should I call Initialize function instead here? 
    Initialize(); 
} 

Derzeit nicht-MFC-Speicher und Objektinitialisierung im Konstruktor Ich habe und MFC-Objekt iniitalization im OnIniitalUpdate (daher Iniitalize() Hilfsfunktion im Konstruktor aufrufen)() Handler-Funktion. Es wäre großartig, Ihre Gedanken darüber zu hören, damit ich den Code richtig umgestalten kann. Danke im Voraus.

Antwort

6

Ich denke, Sie haben Recht, es so zu machen, wie Sie es tun.

Im Allgemeinen würde ich versuchen, Dinge so früh wie möglich zu initialisieren (aber nicht früher 8-), also nicht-GUI Zeug im Konstruktor zu tun, und GUI Sachen in OnInitialUpdate macht Sinn.

(Wenn OnInitDialog für CFormView existiert, wäre wahrscheinlich ein besserer Ort als OnInitialUpdate, aber I don't think it does sein.)

+1

Nein, tut es nicht. AFAIK, OnInitialUpdate ist das Äquivalent von OnInitDialog für die CFormView-Klasse. Danke für deine Gedanken. – stanigator

Verwandte Themen