You often need to format a string and populate it with relevant data before displaying a message box. For example
int nAge = 27;
TCHAR sName[]="Ajay";
float nSalary = 12500.50;
CString strMessage;<br>
strMessage.Format( _T("Name is %s, Age is %d, and salary is %.2f"),
sName, nAge, nSalary);<br>
AfxMessageBox(strMessage);</br></br>
What if this can be acheived by single statement:
AfxMessageBoxFormatted(_T("Name is %s, Age is %d, and salary is %.2f"),
sName, nAge, nSalary);
And here is implementation of
AfxMessageBoxFormatted
:
void AfxMessageBoxFormatted(LPCTSTR pFormatString, ...)
{
va_list vl;
va_start(vl, pFormatString);<br>
CString strFormat;
strFormat.FormatV(pFormatString, vl);
AfxMessageBox(strFormat);
}</br></br>
If you don't you MFC, or don't want to use, you can implement
MessageBoxFormatted
as:
void MessageBoxFormatted(HWND hWnd, LPCTSTR pCaption, LPCTSTR pFormatString, ...)
{
va_list vl;
va_start(vl, pFormatString);<br>
TCHAR strFormat[1024];
_vstprintf(strFormat, pFormatString, vl);<br>
::MessageBox(hWnd, strFormat, pCaption,MB_ICONINFORMATION);
}</br></br></br></br>
And use it as:
MessageBoxFormatted(NULL,
_T("Information"),
_T("Name is %s, Age is %d, and salary is %.2f"),
sName, nAge, nSalary);
If you don't understand stuff like
TCHAR
,
LPCTSTR
,
_T
, you better read this Tip/Trick:
What are TCHAR, WCHAR, LPSTR, LPWSTR, LPCTSTR etc?[
^]
Started programming with GwBasic back in 1996 (Those lovely days!). Found the hidden talent!
Touched COBOL and Quick Basic for a while.
Finally learned C and C++ entirely on my own, and fell in love with C++, still in love! Began with Turbo C 2.0/3.0, then to VC6 for 4 years! Finally on VC2008/2010.
I enjoy programming, mostly the system programming, but the UI is always on top of MFC! Quite experienced on other environments and platforms, but I prefer Visual C++. Zeal to learn, and to share!