/*++ Copyright (c) 1997 Microsoft Corporation Module Name: msgi.h Abstract: Message box routines Author: Vlad Sadovsky (vlads) 26-Jan-1997 Revision History: 26-Jan-1997 VladS created --*/ #include "cplusinc.h" #include "sticomm.h" extern HINSTANCE g_hInstance; int MsgBox( HWND hwndOwner, UINT idMsg, UINT wFlags, const TCHAR *aps[] /* = NULL */ ) { STR strTitle; STR strMsg; strTitle.LoadString(IDS_MSGTITLE); if (aps == NULL) strMsg.LoadString( idMsg ); else strMsg.FormatString(idMsg,aps); return ::MessageBox( hwndOwner, strMsg.QueryStr(), strTitle.QueryStr(), wFlags | MB_SETFOREGROUND ); } /* * MsgBoxPrintf * ------------ * * Message box routine * */ UINT MsgBoxPrintf(HWND hwnd,UINT uiMsg,UINT uiTitle,UINT uiFlags,...) { STR strTitle; STR strMessage; LPTSTR lpFormattedMessage = NULL; UINT err; va_list start; va_start(start,uiFlags); strMessage.LoadString(uiMsg); err = ::FormatMessage(FORMAT_MESSAGE_FROM_STRING | FORMAT_MESSAGE_ALLOCATE_BUFFER, (LPVOID)strMessage.QueryStr(), // FORMAT_MESSAGE_FROM_HMODULE, //::g_hmodThisDll, uiMsg, // Message resource id NULL, // Language id (LPTSTR)&lpFormattedMessage, // Return pointer to fromatted text 255, // Min.length &start ); if (!err || !lpFormattedMessage) { err = GetLastError(); return err; } strTitle.LoadString(uiTitle); err = ::MessageBox(hwnd, lpFormattedMessage, strTitle.QueryStr(), uiFlags); ::LocalFree(lpFormattedMessage); return err; } #if 0 /* * LoadMsgPrintf * ------------- * * Uses normal printf style format string */ UINT LoadMsgPrintf( NLS_STR& nlsMessage, UINT uiMsg, ... ) { LPSTR lpFormattedMessage = NULL; UINT err; va_list start; va_start(start,uiMsg); nlsMessage.LoadString(uiMsg); #ifdef USE_PRINTF_STYLE lpFormattedMessage = ::LocalAlloc(GPTR,255); // BUGBUG if (!lpFormattedMessage) { Break(); return WN_OUT_OF_MEMORY; } ::wsprintf(lpFormattedMessage, nlsMessage.QueryPch(), &start); #else err = ::FormatMessage(FORMAT_MESSAGE_FROM_STRING | FORMAT_MESSAGE_ALLOCATE_BUFFER, nlsMessage, //| FORMAT_MESSAGE_FROM_HMODULE, //::g_hmodThisDll, uiMsg, // Message resource id NULL, // Language id (LPTSTR)&lpFormattedMessage, // Return pointer to fromatted text 255, // Min.length &start ); if (!err || !lpFormattedMessage) { err = GetLastError(); return err; } #endif nlsMessage = lpFormattedMessage; ::LocalFree(lpFormattedMessage); return WN_SUCCESS; } #endif