114 lines
3.3 KiB
C++
114 lines
3.3 KiB
C++
//=============================================================================*
|
|
// COPYRIGHT© 2001 Microsoft Corporation and Executive Software International, Inc.
|
|
//=============================================================================*
|
|
// File: ErrMsg.cpp
|
|
//=============================================================================*
|
|
|
|
#include "stdafx.h"
|
|
#include <windows.h>
|
|
#include "ErrMacro.h"
|
|
#include "Message.h"
|
|
#include "ErrLog.h"
|
|
#include "Dfrgres.h"
|
|
#include "IntFuncs.h"
|
|
#include "vString.hpp"
|
|
#include "GetDfrgRes.h" // to use the GetDfrgResHandle()
|
|
|
|
//This logfile capability is activated only for the engines.
|
|
#if defined(DFRGFAT) || defined(DFRGNTFS)
|
|
#include "LogFile.h"
|
|
extern BOOL bLogFile;
|
|
#endif
|
|
|
|
extern BOOL bPopups;
|
|
extern BOOL bIdentifiedErrorPath;
|
|
extern HINSTANCE hInst;
|
|
|
|
//-------------------------------------------------------------------*
|
|
// function: ErrorMessageBox
|
|
//
|
|
// returns: None
|
|
// note:
|
|
//-------------------------------------------------------------------*
|
|
BOOL
|
|
ErrorMessageBox(
|
|
TCHAR* cMsg,
|
|
TCHAR* cTitle
|
|
)
|
|
{
|
|
//Added cNewMsg code to take care of the case where cMsg == NULL, so that we put some message
|
|
//out instead of nothing.
|
|
TCHAR cNewMsg[256];
|
|
|
|
if(cMsg == NULL)
|
|
{
|
|
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, // source and processing options
|
|
NULL, // message source
|
|
NULL, // message identifier
|
|
NULL, // language identifier
|
|
cNewMsg, // message buffer
|
|
255, // maximum size of message buffer
|
|
NULL // array of message inserts
|
|
);
|
|
} else
|
|
{
|
|
wcscpy(cNewMsg, cMsg);
|
|
}
|
|
|
|
#ifndef OFFLINEDK
|
|
|
|
//Write the error to the error log.
|
|
WriteErrorToErrorLog(cNewMsg, -1, NULL);
|
|
|
|
//This logfile capability is activated only for the engines.
|
|
#if defined(DFRGFAT) || defined(DFRGNTFS)
|
|
//If the logfile for the test harness is enabled, then log it there too.
|
|
if(bLogFile){
|
|
WriteStringToLogFile(cNewMsg);
|
|
//return TRUE; //Have to bail out here so we don't print the messagebox below.
|
|
}
|
|
#endif
|
|
|
|
//If this is set for messageboxes (not IoStress) then pop up a messagebox too.
|
|
if(bPopups && !bIdentifiedErrorPath){
|
|
MessageBox(NULL, cNewMsg, cTitle, MB_ICONSTOP|MB_OK);
|
|
//Once an error message has been printed, don't print another.
|
|
bIdentifiedErrorPath = TRUE;
|
|
}
|
|
#endif
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
//-------------------------------------------------------------------*
|
|
// function: FileBugReportMessage
|
|
//
|
|
// returns: Always TRUE
|
|
// FileBugReportMessage is identical to ErrorMessageBox, except that it puts up
|
|
// a generic message telling the user to give us a log file
|
|
// rather than pop up a message explaining the error.
|
|
// This function is used when there is a code error, not when it isn't a bug, such as
|
|
// when the user tells us to run on a volume that doesn't exist.
|
|
//-------------------------------------------------------------------*
|
|
BOOL
|
|
FileBugReportMessage(
|
|
TCHAR* cMsg,
|
|
TCHAR* cTitle
|
|
)
|
|
{
|
|
#ifndef OFFLINEDK
|
|
VString msg(IDS_FILE_BUG_MESSAGE, GetDfrgResHandle());
|
|
|
|
//Write the error to the error log.
|
|
WriteErrorToErrorLog(cMsg, -1, NULL);
|
|
|
|
//If this is set for messageboxes (not IoStress) then pop up a messagebox too.
|
|
if(bPopups && !bIdentifiedErrorPath){
|
|
MessageBox(NULL, msg.GetBuffer(), cTitle, MB_OK|MB_ICONSTOP);
|
|
//Once an error message has been printed, don't print another.
|
|
bIdentifiedErrorPath = TRUE;
|
|
}
|
|
#endif
|
|
return TRUE;
|
|
}
|