Erstellen der "OnInit" Funktion einer Klasse



  • Hallo,

    was muss ich beachten, wenn ich einer Dialogklasse eine oninit-Funktion
    hinzufügen will ?
    Reicht es eine Funktion mit "OnInit" zu erstellen und diese wird dann
    automatisch aufgerufen oder muss ein Ereignisshandler (welcher?) mit
    eingefügt werden. Oder gibt es dies bei Dialogklassen nicht ?

    cu



  • OnInitDialog <- MSDN



  • fffffffff schrieb:

    OnInitDialog <- MSDN

    Das ist ja mein Problem, da steht:

    This member function is called in response to the WM_INITDIALOG message. This message is sent to the dialog box during the Create, CreateIndirect, or DoModal calls, which occur immediately before the dialog box is displayed.
    ....

    da mach ich dann also einen Rechtsklick auf die Dialogbox und finde Null
    WM_INITDIALOG. Zumal dieses auch nicht in einem normalen MFC Dialog erzeugt wird
    oder per Rechtsklick erreichbar ist ....



  • Wenn deine Klasse von CDialog abgeleitet ist, muss das auch da sein (unter Nachrichtenbehandlung).

    Ansonsten, versuch es mit selbst einbauen. Einen Eintrag in der MessageMap scheint man nicht zu brauchen.

    Header

    virtual BOOL OnInitDialog();
    

    Cpp

    BOOL CDeinDlg::OnInitDialog() 
    {
    	CDialog::OnInitDialog();
    
    	return TRUE;  // return TRUE unless you set the focus to a control
    	              // EXCEPTION: OCX-Eigenschaftenseiten sollten FALSE zurückgeben
    }
    


  • OnInitDialog in deinem Dialog wird automatisch aufgerufen, weil es eine virtuelle Funktion ist, und nicht die Handler-Funktion für WM_INITDIALOG.

    Die Handler-Funktion selbst ist in der MFC (CDialog::HandleInitDialog), von da wird dann die virtuelle Funktion aufgerufen.



  • Und da ward ein Licht geboren ......

    thx


Anmelden zum Antworten