|
|
#include "precomp.h"
#pragma hdrstop
int MessageBoxFromMessageV( IN HWND Window, IN DWORD MessageId, IN BOOL SystemMessage, IN LPCTSTR CaptionString, IN UINT Style, IN va_list *Args ) { TCHAR Caption[512]; TCHAR Buffer[5000];
if((DWORD_PTR)CaptionString > 0xffff) { //
// It's a string already.
//
lstrcpyn(Caption,CaptionString,sizeof(Caption)/sizeof(TCHAR)); } else { //
// It's a string id
//
if(!LoadString(hInst,PtrToUlong(CaptionString),Caption,sizeof(Caption)/sizeof(TCHAR))) { Caption[0] = 0; } }
FormatMessage( SystemMessage ? FORMAT_MESSAGE_FROM_SYSTEM : FORMAT_MESSAGE_FROM_HMODULE, NULL, MessageId, 0, Buffer, sizeof(Buffer) / sizeof(TCHAR), Args );
return(MessageBox(Window,Buffer,Caption,Style|MB_SETFOREGROUND)); }
int MessageBoxFromMessage( IN HWND Window, IN DWORD MessageId, IN BOOL SystemMessage, IN LPCTSTR CaptionString, IN UINT Style, ... ) { va_list arglist; int i;
va_start(arglist,Style);
i = MessageBoxFromMessageV(Window,MessageId,SystemMessage,CaptionString,Style,&arglist);
va_end(arglist);
return(i); }
int MessageBoxFromMessageAndSystemError( IN HWND Window, IN DWORD MessageId, IN DWORD SystemMessageId, IN LPCTSTR CaptionString, IN UINT Style, ... ) { va_list arglist; TCHAR Caption[512]; TCHAR Buffer1[1024]; TCHAR Buffer2[1024]; int i;
//
// Fetch the non-system part. The arguments are for that part of the
// message -- the system part has no inserts.
//
va_start(arglist,Style);
FormatMessage( FORMAT_MESSAGE_FROM_HMODULE, NULL, MessageId, 0, Buffer1, sizeof(Buffer1) / sizeof(TCHAR), &arglist );
va_end(arglist);
//
// Now fetch the system part.
//
FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM, NULL, MessageId, 0, Buffer2, sizeof(Buffer2) / sizeof(TCHAR), &arglist );
//
// Now display the message, which is made up of two parts that get
// inserted into MSG_ERROR_WITH_SYSTEM_ERROR.
//
i = MessageBoxFromMessage( Window, MSG_ERROR_WITH_SYSTEM_ERROR, FALSE, CaptionString, Style, Buffer1, Buffer2 );
return(i); }
|