Page 1 of 1

[MFC] Cum schimbam titlul intr-un frame?

Posted: 16 Jul 2007, 16:17
by Ovidiu Cucu
Problema
Intr-o aplicatie SDI/MDI, de obicei se afiseaza pe bara de titlu un string de forma "nume_document - nume_aplicatie" pentru frame-ul principal sau "nume_document" pentru un frame MDI child.
Exemple
  • Untitled - MyApp
  • Test.txt - MyApp
  • Test.txt
Daca incercam sa schimbam pur si simplu apeland SetWindowText din oarece loc, nu merge, pentru ca framework-ul foloseste din nou schema de mai sus si inlocuieste titlul nostru schimbat "cu atata truda".

Rezolvare
Suprascriem functia virtuala (nedocumentata) CFrameWnd::OnUpdateFrameTitle.

Exemplu

Code: Select all

// MainFrm.h 

class CMainFrame : public CFrameWnd // NOTA: poate fi de asemenea 
                                    //       CMDIChildWnd 
                                    //       sau CMDIFrameWnd 
{ 
   // ... 
   virtual void OnUpdateFrameTitle(BOOL bAddToTitle); 
   // ... 
};

Code: Select all

// MainFrm.cpp 

void CMainFrame::OnUpdateFrameTitle(BOOL bAddToTitle) 
{ 
   SetWindowText(_T("Asta-i pohta ce-am pohtit!")); 
}

<< Back to MFC index