103 lines
2.7 KiB
C++
103 lines
2.7 KiB
C++
|
/*****************************************************************/
|
||
|
/** Microsoft Windows for Workgroups **/
|
||
|
/** Copyright (C) Microsoft Corp., 1991-1992 **/
|
||
|
/*****************************************************************/
|
||
|
|
||
|
/* NPGENERR.C -- Implementation of the DisplayGenericError subroutine.
|
||
|
*
|
||
|
* History:
|
||
|
* 10/07/93 gregj Created
|
||
|
*/
|
||
|
|
||
|
#include "npcommon.h"
|
||
|
#include "npmsg.h"
|
||
|
#include "npstring.h"
|
||
|
|
||
|
/*******************************************************************
|
||
|
|
||
|
NAME: DisplayGenericError
|
||
|
|
||
|
SYNOPSIS: Displays an error message, substituting in a
|
||
|
description of an error code.
|
||
|
|
||
|
ENTRY: hwnd - parent window handle
|
||
|
msg - string ID for message template
|
||
|
err - error code to substitute in
|
||
|
psz1 - main substitution string
|
||
|
psz2 - error code substitution string
|
||
|
wFlags - flags to MessageBox
|
||
|
nMsgBase - bias for error code
|
||
|
|
||
|
EXIT: Returns control ID of user's choice
|
||
|
|
||
|
NOTES: nMsgBase is so that the error code need not
|
||
|
be the same as the string ID. It is added to
|
||
|
the error code before loading the description,
|
||
|
but the error code alone is the number inserted
|
||
|
into the template.
|
||
|
|
||
|
The text for "msg" should be of the form:
|
||
|
|
||
|
The following error occurred while trying to fiddle with %1:
|
||
|
|
||
|
Error %2: %3
|
||
|
|
||
|
Do you want to continue fiddling?
|
||
|
|
||
|
The text for "err" (+nMsgBase if appropriate) should
|
||
|
be of the form:
|
||
|
|
||
|
%1 cannot be fiddled with.
|
||
|
|
||
|
In the primary message, %1 is replaced with psz1, %2
|
||
|
is replaced with atoi(err), and %3 is replaced with
|
||
|
a LoadString of "err". In the specific error text,
|
||
|
%1 is replaced with psz2.
|
||
|
|
||
|
HISTORY:
|
||
|
gregj 09/30/93 Created for Chicago
|
||
|
|
||
|
********************************************************************/
|
||
|
|
||
|
UINT DisplayGenericError(HWND hwnd, UINT msg, UINT err, LPCSTR psz1, LPCSTR psz2,
|
||
|
WORD wFlags, UINT nMsgBase)
|
||
|
{
|
||
|
/*
|
||
|
* setup the object name
|
||
|
*/
|
||
|
NLS_STR nlsObjectName(STR_OWNERALLOC, (LPSTR)psz1);
|
||
|
|
||
|
/*
|
||
|
* now the error number
|
||
|
*/
|
||
|
CHAR szErrorCode[16];
|
||
|
wsprintf(szErrorCode,"%u",err);
|
||
|
NLS_STR nlsErrorCode(STR_OWNERALLOC, szErrorCode);
|
||
|
|
||
|
/*
|
||
|
* fetch the error string. If cannot get, use "".
|
||
|
*/
|
||
|
NLS_STR nlsSub1(STR_OWNERALLOC, (LPSTR)psz2);
|
||
|
|
||
|
NLS_STR *apnlsParamStrings[4];
|
||
|
apnlsParamStrings[0] = &nlsSub1;
|
||
|
apnlsParamStrings[1] = NULL;
|
||
|
|
||
|
NLS_STR nlsErrorString(NULL) ;
|
||
|
nlsErrorString.LoadString(err + nMsgBase, (const NLS_STR **)apnlsParamStrings);
|
||
|
err = nlsErrorString.QueryError() ;
|
||
|
if (err)
|
||
|
nlsErrorString = (const CHAR *)NULL;
|
||
|
|
||
|
/*
|
||
|
* then create the insert strings table
|
||
|
*/
|
||
|
apnlsParamStrings[0] = &nlsObjectName;
|
||
|
apnlsParamStrings[1] = &nlsErrorCode;
|
||
|
apnlsParamStrings[2] = &nlsErrorString;
|
||
|
apnlsParamStrings[3] = NULL;
|
||
|
|
||
|
return MsgBox(hwnd, msg, wFlags, (const NLS_STR **)apnlsParamStrings);
|
||
|
}
|
||
|
|