156 lines
3.3 KiB
C++
156 lines
3.3 KiB
C++
/*++
|
|
|
|
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
|