CDialog initialisieren



  • Hallo
    Ich hab ein kleines Problem und hoffe, es kann mir jemand helfen. Während der Laufzeit meines Programmes erzeuge ich beim klicken auf einen Button ein Dialogfeld. also habe ich das dialogfeld am anfang meiner Funktion deklariert.

    //zB:
    //MainImportDlg importdlg;

    Wenn ich jetzt aber auf ein CListCtrl-Element des dialogfelds zugreiffen möchte, bevor ich das DoModal mache...

    //zB:
    //importdlg.m_ListUser.SetItemText (...);

    ... erhalte ich eine Fehlermeldung. Dies scheint mir auch noch logisch, denn wenn ich im Debug-Modus schaue, ob speicherplatz reserviert ist, sehe ich nur: {CWnd hWnd=0x0000000}.
    Was muss ich tun, um trotzdem schon vor dem doModal() auf die Steuerelemente des Dialogfelds zugreiffen zu können?

    bin für jeden Tipp froh.

    danke
    Gruss Poirez



  • Tach auch
    ich mach das so:

    // Element von Dialog besorgen
    CDlg my_Dlg;
    
    // Zugriff auf die Elemente des Zweitfensters
    my_Dlg.meineVariable = x;
    my_Dlg.meineComboBox.AddString("hallo");
    
    // Fenster modal darstellen
    my_Dlg.DoModal();
    

    Ich hoffe, das du sowas gemeint hast !?! --> viel erfolg



  • @Michael_Bln

    Um was wollen wir wetten, dass Du diesen Code nicht ausprobiert hast?
    Er funktioniert nämlich nicht!!



  • Ist ja auch Logisch da der Dialog und somit seine Steuerelemente noch nicht existrieren wenn man eine Instanz einer Dialogklasse hat.

    Lösung:
    In der Neuen Dialogklasse in OnInitDlg die Steuerelemente füllen.
    Brauchst du von der Aufruferklasse Daten dann von dort holen oder bereits vor DoModal an die Klasse übergeben



  • BOOL CDlgMaskD::OnInitDialog()
    {
      //hier sollte dein code stehen
      return 1; 
    }
    


  • @ReneG

    Du hast recht - hab das nicht ausprobiert!



  • Danke erstmals,
    Das mit dem OnInitDialog ist mir auch schon in den sinn gekommen, aber da hab ich leider das Problem, dass ich aus dem Dialogfeld nicht auf die Daten, welche sich in der View Klasse befinden zugreiffen kann. und wenn ich die Daten vorher zwischen speichern, müsste ich in der Headerdatei des Dialogfeldes eine Instantz eines Structes erzeugen

    //zB:
    //User myuser[30];

    und dazu muss ich dann dessen header-file einbinden;
    //#include "memberdef.h"

    doch leider kommt, wenn ich das tue dann immer ein Fehler beim Komprimieren, von "Typenneudefinition"!
    ???


Anmelden zum Antworten