Titelleiste eines ChildFrame im Programm ändern



  • Hallo,

    ich tüftle schon eine ganze Zeit herum, komme aber nicht recht weiter.

    Daher meine Frage:

    Ich habe eine MDI-Anwendung mit diversen Child-Fenstern.
    Die ChildViews sind CFormView's als Eingabemasken mit
    Eingabefeldern und Button.

    Ich möchte per Buttonklick auf einem CFormView den Titel des
    ChildFrame ändern.

    Vielen Dank für einen hilfreichen Tip.



  • SetWindowText() dürfte die richtige Methode sein.



  • SetWindowText funktioniert nur eingeschränkt bei MDI-Fenstern und der MFC.
    Nach dem Öffnen eines neuen Fensters ist die Umbenennung wieder weg.

    Normalerweise bestimmt das CDocument den Titel der MDI-Fenster. Der Titel des CDocument kann über

    GetDocument()->SetTitle( _T("Hello World") );
    

    aus dem CFormView geändert werden.


  • Mod

    Oder das entsprechende MDIChildFrame wird nicht mit dem Stil FWS_ADDTOTITLE erzeugt. Dann kann man auch SetWindowtext verwenden!



  • Hallo tvdog,
    deine Aussage:
    SetWindowText funktioniert nur eingeschränkt bei MDI-Fenstern und der MFC.
    Nach dem Öffnen eines neuen Fensters ist die Umbenennung wieder weg.

    Normalerweise bestimmt das CDocument den Titel der MDI-Fenster. Der Titel des CDocument kann über: GetDocument()->SetTitle( _T("Hello World") );
    aus dem CFormView geändert werden.

    kann ich bestätigen, nur daß sich dabei der Fenstertitel des MainFrame ändert und nicht der des ChildFrame, welches meine Absicht ist. 👍
    SetWindowText zeigt in jedem Fall keinerlei Reaktion. 😞
    Hat noch einer eine Idee ?



  • Oder das entsprechende MDIChildFrame wird mit dem Stil FWS_ADDTOTITLE erzeugt. Dann kann man auch SetWindowtext verwenden!

    Das Flag FWS_ADDTOTITLE muß vom CMDIChildWnd entfernt werden, dann funktioniert SetWindowText().

    Hab's mal ausprobiert und es funktioniert.

    void CFormTitleTest2View::OnButton1() 
    {
    	GetParentFrame()->ModifyStyle( FWS_ADDTOTITLE, 0, FWS_ADDTOTITLE );
    
    	GetParentFrame()->SetWindowText( _T("Hello World") );	
    }
    


  • Hallo tvdog,

    habe es ebenfalls ausprobiert.
    Funktioniert. 👍

    Perfekt. Danke für Deinen Tip. 😃
    Jetzt geht's endlich wieder weiter ! ➡


  • Mod

    Das ganze kann man auch wie dokumentiert in PreCreateWindow machen!


Anmelden zum Antworten