[MFC] Cum customizez AfxMessageBox?

Despre MFC, ATL si alte biblioteci C++ de la Microsoft (forum moderat)
Post Reply
User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

[MFC] Cum customizez AfxMessageBox?

Post by Ovidiu Cucu » 16 Jul 2007, 14:13

Problema
Printre cele mai des folosite functii intr-o aplicatie MFC este AfxMessageBox. Cum se poate "customiza" messagebox-ul afisat de aceasta aceasta functie?

Rezolvare
Cea mai eleganta metoda este sa suprascriem functia virtuala CWinApp::DoMessageBox, care este apelata din interiorul lui AfxMessageBox.

Exemplul urmator schimba textul de pe bara de titlu (caption) care este implicit numele aplicatiei sau fisierului executabil
Exemplu

Code: Select all

// MyApp.h 
class CMyApp : public CWinApp 
{ 
// ... 
// Overrides 
public: 
   virtual int DoMessageBox(LPCTSTR lpszPrompt, UINT nType, UINT nIDPrompt); 
// ... 
};

Code: Select all

// MyApp.cpp 
int CMyApp::DoMessageBox(LPCTSTR lpszPrompt, UINT nType, UINT nIDPrompt) 
{ 
   // keep in mind m_pszAppName pointer 
   LPCTSTR pszAppName = m_pszAppName; 
   // assign the new desired name 
   m_pszAppName = _T("My Cool Message Box Caption"); 
   // call base class function 
   int nRet = CWinApp::DoMessageBox(lpszPrompt, nType, nIDPrompt); 
   // restore initial m_pszAppName pointer then return 
   m_pszAppName = pszAppName; 
   return nRet; 
}
NOTA: Bineiteles, se poate merge si mai departe cu "customizarea", renuntand chiar la apelul functiei din clasa de baza (CWinApp::DoMessageBox).


<< Back to MFC index



Post Reply