Das Dialogfenster ansprechen geht nicht



  • Hey Leute! Ich versuch den Titel meines Dialogs während der Laufzeit zu ändern.
    Nach bekanntem Schema:

    CDialog * dialog;
    dialog = (CDialog*) GetDlgItem(IDD_Test);
    dialog->SetWindowText("Anderer Text");
    

    Da bekomm ich beim Compilieren keinen Fehler, aber während der Laufzeit bekomm ich ne Anweisungsfehler von Windows.
    Geht das im Falle eines Dialogs überhaupt zu ändern? Das ist doch auch nur ein Fenster.

    Danke NiP



  • moin,
    soweit ich bisher immer gedacht hab musst du doch erstma ne variable haben, bevor du damit mit nem zeiger drauf zugreifen kannst, aber die variable fehlt dir, von daher versuch das mal so:

    CDialog dialog;
    dialog.Create(IDD_DIALOG, this);
    

    kann uach sein das ich grad müll erzählt hab, aber so sollte es gehen



  • Hallo.

    So müsste es gehen:

    CMyDlg* dlg = new CMyDlg;
    dlg->Create(IDD_Test,this);
    dlg->ShowWindow(SW_SHOW);
    //Code...
    dlg->SetWindowText("Neuer Titel");
    //Code...
    dlg->DestroyWindows();
    delete dlg;
    

    Bye.



  • Ja, wenn ich den Dialog nicht schon offen hätt, würde es so gehen. Ich brauch nur nen Zeiger drauf und den hab ich mir ja geholt, zumindest wollte ich das. Es scheint auch einer da zu sein, denn er steigt bei der Textzuweisung aus (laut Debugger). Caste ich evtl. falsch?

    NiP



  • GetDlgItem liefert die Steuerelemente bzw. Kindfenster eines Dialogs, nicht den Dialog selbst. Da dein Code aber anscheinend in einer Memberfunktion der Dialogklasse steht (zumindest in einer Memberfunktion einer von CWnd abgeleiteten Klasse, sonst könntest du GetDlgItem nicht so aufrufen), versuch doch einfach mal das:

    SetWindowText("Anderer Text");



  • Genau das war es, es kann ja kein Kindfenster rufen, wenn es das ParentFenster selbst sein soll, was geändert wird.

    Danke


Anmelden zum Antworten