2020-09-30 17:12:29 +02:00

1202 lines
36 KiB
C++

//=============================================================================
// (c) Copyright Wang Laboratories, Inc. 1995 All rights reserved.
//-----------------------------------------------------------------------------
// Project: Norway - Image Editor
// File: ERROR.CPP
// Description:error functions
//
// The basic operation of the error bins is controlled by the 'lock'
// variables. Codes cannot be written unless 'lock' is FALSE. (not Locked)
// Once written, 'lock' becomes TRUE. Data cannot be displayed unless
// 'lock' is TRUE. Bin2 cannot be written unless bin1 is locked first.
// To clear the bins, all we have to do is unlock them.
//
//
// Date Who Why
// 05/05/95 LDM Created from ABERR.CPP
//
//-----------------------------------------------------------------------------
// Maintenance Log:
/*
$Header: S:\products\msprods\norway\iedit95\error.cpv 1.26 17 Jun 1996 13:43:06 GMP $
$Log: S:\products\msprods\norway\iedit95\error.cpv $
Rev 1.26 17 Jun 1996 13:43:06 GMP
file access error returns file already open string now instead of invalid
format string.
Rev 1.25 14 Jun 1996 15:37:52 GMP
added handling of file access error in verifying image error.
Rev 1.24 05 Feb 1996 13:37:18 GMP
nt changes.
Rev 1.23 29 Nov 1995 11:38:36 MMB
move PATHFILEACCESSERROR to new string in HandleOpenFileError
Rev 1.22 10 Nov 1995 16:28:50 GMP
check for invalid display scale in HandlePageMovementError.
Rev 1.21 06 Nov 1995 18:20:10 GMP
use ! instead of X HandleSavingError.
Rev 1.20 17 Oct 1995 15:14:24 GMP
check for invalid file format in handle saving error
Rev 1.19 03 Oct 1995 12:07:38 MMB
handle WICTL_E_PAGEINUSE error code from Admin
Rev 1.18 27 Sep 1995 14:51:18 GMP
Added HandleZoomError().
Rev 1.17 26 Sep 1995 14:56:34 MMB
added error handling for fns. for disk full situation
Rev 1.16 22 Sep 1995 17:04:36 GMP
test for file path access error in HandleSaveError.
Rev 1.15 20 Sep 1995 18:41:30 MMB
handler for invalid comp type
Rev 1.14 15 Sep 1995 14:32:10 MMB
added more error codes to Insert & Append
Rev 1.13 13 Sep 1995 14:15:48 LMACLENNAN
useless default in GetActualError
Rev 1.12 01 Sep 1995 23:35:24 MMB
added errors on saving
Rev 1.11 01 Sep 1995 17:54:48 MMB
added save error
Rev 1.10 28 Aug 1995 13:55:32 LMACLENNAN
supress error codes from DispErr (the orig function)
Rev 1.9 25 Aug 1995 10:25:56 MMB
move to document model
Rev 1.8 16 Aug 1995 17:32:58 MMB
added VerifyImageError
Rev 1.7 11 Aug 1995 13:45:20 MMB
fix bug 3398
Rev 1.6 11 Aug 1995 09:06:42 MMB
new error handling
Rev 1.5 10 Aug 1995 14:49:26 MMB
added Save error handling
Rev 1.4 02 Aug 1995 11:23:34 MMB
added new functions to process the error's
Rev 1.3 01 Aug 1995 16:13:00 MMB
added HandleOpenError fn to be in line with how we are going to handle
errors from now on
Rev 1.2 12 Jul 1995 11:14:20 MMB
add DispErr call to take an additional COleDispatchException parm
Rev 1.1 19 Jun 1995 10:48:50 LMACLENNAN
remove errorrc.h, use resource.h
Rev 1.0 31 May 1995 09:28:08 MMB
Initial entry
.*/
//=============================================================================
// ----------------------------> Includes <-------------------------------
#include "stdafx.h"
#include <stdlib.h> // itoa
#define E_ALLCODES
#include "error.h"
#include "iedit.h"
#include "resource.h"
#include "ieditetc.h"
#include "items.h"
#include "wangiocx.h"
// ----------------------------> Globals <-------------------------------
#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif
// works with definition in ieditetc.h
#ifdef _DEBUG
#define MYTRCENTRY(str) TRACE1("In CIeERR::%s\r\n", str);
#endif
//=============================================================================
// Function: CIeditError()
// constructor for this class
//-----------------------------------------------------------------------------
CIeditError::CIeditError()
{
MYTRC0("In IeditErr's Constructor ++ERR \r\n");
m_init = FALSE;
m_lock1 = FALSE;
m_lock2 = FALSE;
m_err1 = (DWORD)0;
m_err2 = (DWORD)0;
m_errtext[0] = '\0';
m_szLocationStr = (LPCTSTR) NULL;
return;
}
//=============================================================================
// Function: ~CIeditError
// Destructor
//-----------------------------------------------------------------------------
CIeditError::~CIeditError(void)
{
MYTRC0("In IeditErr's Destructor --ERR \r\n");
return;
}
//=============================================================================
// Function: SetInstance(HINSTANCE hInst)
// Initialize
//-----------------------------------------------------------------------------
void CIeditError::SetInstance(HINSTANCE hInst)
{
m_ApphInst = hInst; // must pass the instance where RC data can be loaded from
return;
}
//=============================================================================
// Function: PutErr(DWORD error)
// Save error & lock bin
//-----------------------------------------------------------------------------
void CIeditError::PutErr(DWORD error)
{
/* Only write error if not locked & error not 0 */
if (!m_lock1 && (error != (DWORD)0) )
{
m_err1 = error;
m_lock1 = TRUE;
m_errtext[0] = '\0';
}
return;
}
//=============================================================================
// Function: PutErr(DWORD error, DWORD error2)
// OVERRIDDEN Save both errors & lock bin
//-----------------------------------------------------------------------------
void CIeditError::PutErr(DWORD error, DWORD error2)
{
PutErr(error);
PutErr2(error2);
return;
}
//=============================================================================
// Function: PutErr2(DWORD error)
// PutErr2 - Save error & lock bin
//-----------------------------------------------------------------------------
void CIeditError::PutErr2(DWORD error)
{
/* Only write error if bin 1 locked, bin2 NOT LOCKED */
if (m_lock1)
if (!m_lock2 && (error >= (DWORD)0) )
{
m_err2 = error;
m_lock2 = TRUE;
}
return;
}
//=============================================================================
// Function: PutErr2Hr(DWORD error)
// Save OLE Hr error & lock bin. We translate the HRESULT into an SCODE
//-----------------------------------------------------------------------------
void CIeditError::PutErr2Hr(DWORD error)
{
/* Only write error if bin 1 locked, bin2 NOT LOCKED */
if (m_lock1)
if (!m_lock2 && (error >= (DWORD)0) )
{
/* translate into SCODE from HRESULT */
m_err2 = (DWORD)GetScode((HRESULT)error);
m_lock2 = TRUE;
}
return;
}
//=============================================================================
// Function: PutErr2Hr(DWORD error, DWORD error2)
// OVERRIDDEN Save primary and second OLE Hr error & lock bin
//-----------------------------------------------------------------------------
void CIeditError::PutErr2Hr(DWORD error, DWORD error2)
{
PutErr(error);
PutErr2Hr(error2);
return;
}
//=============================================================================
// Function: PutErrText(LPSTR txt)
// save text associated with bin1
//-----------------------------------------------------------------------------
void CIeditError::PutErrText(LPSTR txt)
{
/* Only save if bin 1 locked */
if (m_lock1)
{
for (int i=0; i<ERMSG_LEN-1 && txt[i]; i++)
m_errtext[i] = txt[i];
m_errtext[i] = '\0';
}
return;
}
//=============================================================================
// Function: GetErr(int bin, DWORD FAR* erval)
// Retrieve error and unlock bin
//-----------------------------------------------------------------------------
BOOL CIeditError::GetErr(int bin, DWORD FAR* erval)
{
if ((bin == 1) && (m_lock1)) /* Only return error if it is locked */
{
*erval = m_err1;
return (TRUE);
}
if ((bin == 2) && (m_lock2)) /* Only return error if it is locked */
{
*erval = m_err2;
return (TRUE);
}
return (FALSE);
}
//=============================================================================
// Function: IsErr ()
// Tell if error here - nondestructive
//-----------------------------------------------------------------------------
BOOL CIeditError::IsErr()
{
return ((BOOL)m_lock1);
}
//=============================================================================
// Function: ClearErr
// Unlock both bins
//-----------------------------------------------------------------------------
void CIeditError::ClearErr()
{
m_lock1 = m_lock2 = FALSE;
m_szLocationStr = (LPCTSTR) NULL;
return;
}
//=============================================================================
// Function: DispErr(DWORD code)
// Put and display error
//-----------------------------------------------------------------------------
void CIeditError::DispErr(DWORD code)
{
PutErr(code);
DispErr();
return;
}
//=============================================================================
// Function: DispErr(DWORD code, DWORD code2)
// OVERRIDDEN - Put & Display both error codes
//-----------------------------------------------------------------------------
void CIeditError::DispErr(DWORD code, DWORD code2)
{
PutErr(code);
PutErr2(code2);
DispErr();
return;
}
#if(0)
//=============================================================================
// Function: DispErr(DWORD code, DWORD code2)
// OVERRIDDEN - Put & Display both error codes
//-----------------------------------------------------------------------------
void CIeditError::DispErr(DWORD code, DWORD code2, COleDispatchException* e)
{
if (code2)
DispErr(code, (DWORD)code2);
else
DispErr(code+1, e->m_wCode);
return;
}
#endif
//=============================================================================
// Function: DispErrHr(DWORD code, DWORD code2)
// Put & Display Both Error Codes (OLE Hr as second).We translate the HRESULT into an SCODE
//-----------------------------------------------------------------------------
void CIeditError::DispErrHr(DWORD code, DWORD code2)
{
PutErr(code);
PutErr2Hr(code2);
DispErr();
return;
}
//=============================================================================
// Function: DispErr ()
// Display Error - BASE version
//-----------------------------------------------------------------------------
void CIeditError::DispErr()
{
// FARPROC lpDlgProc;
SHOWENTRY("DispErr");
DWORD err;
WORD i;
char boxtitle[35];
char dispmsg1[256]; /* Primary message */
char ermsg1[ERMSG_LEN]; /* Primary code */
char ermsg2[ERMSG_LEN]; /* Secondary Code */
char tmpmsg[8];
// Start by setting & getting secondary message (if any)
dispmsg1[0] = 0; // always clear this out
ermsg1[0] = 0;
ermsg2[0] = 0;
// check secondary error
// this is the real error code
// For RELEASE of PRODUCT, avoid putting error codes on screen
// Only show code if special flag is on...
if (theApp.m_bShowDbgErrCodes)
{
if (GetErr(2, &err))
{
// string = 'Detail Code was 0x'
LoadString (m_ApphInst, IDS_2NDCODE, (LPSTR)ermsg2, ERMSG_LEN);
//itoa(err, tmpmsg, 10);
//lstrcat ( (LPSTR)ermsg2, (LPSTR)tmpmsg); // build it
i = HIWORD(err);
_itoa(i, tmpmsg, 16);
_strupr(tmpmsg);
PadErr(tmpmsg); // get leading 0's
lstrcat ( (LPSTR)ermsg2, (LPSTR)tmpmsg); // get hi half
lstrcat ( (LPSTR)ermsg2, (LPSTR)" 0x"); // setup lo half
i = LOWORD(err);
_itoa(i, tmpmsg, 16);
_strupr(tmpmsg);
PadErr(tmpmsg); // get leading 0's
lstrcat ( (LPSTR)ermsg2, (LPSTR)tmpmsg); // build lo
// now get some human-readable message in secondary buffer
// if the error is OMT/NETBIOS or Print Server error
// or other SII error that we decode.
// deciphomt(err, (LPSTR)dispmsg2);
}
}
/* Then get Primary message */
if (GetErr(1, &err))
{
// string = 'ABOLE -'
LoadString (m_ApphInst, IDS_1STCODE, (LPSTR)ermsg1, ERMSG_LEN);
// for now, lets default to OUR PRIVATE CODES being just ints
_itoa((int)err, tmpmsg, 10);
lstrcat ( (LPSTR)ermsg1, (LPSTR)tmpmsg); // completes error code
// now get some human-readable message in buffer.
// start with default, then decode for specific error message
// LoadString (m_ApphInst, IDS_NOMSG, (LPSTR)dispmsg1, ERMSG_LEN);
decipher(err, (LPSTR)dispmsg1);
lstrcat (dispmsg1, "\r\n\n");
// stick in any extra text supplied now
if (m_errtext[0])
{
lstrcat (dispmsg1, m_errtext);
lstrcat (dispmsg1, "\r\n\n");
}
// this is the real error code
// For RELEASE of PRODUCT, avoid putting error codes on screen
// Only show code if special flag is on...
if (theApp.m_bShowDbgErrCodes)
{
lstrcat (dispmsg1, ermsg1);
// this is tne extra code (if any)
if (ermsg2[0])
{
lstrcat (dispmsg1, "\r\n");
lstrcat (dispmsg1, ermsg2);
}
}
LoadString(m_ApphInst, IDS_ERRTITLE, (LPSTR)boxtitle, sizeof(boxtitle));
MessageBox((HWND)0, dispmsg1, boxtitle, MB_ICONEXCLAMATION|MB_OK);
// MessageBox(GetActiveWindow(), dispmsg1, boxtitle, MB_ICONEXCLAMATION|MB_OK);
}
return;
}
//=============================================================================
// Function: PadErr(LPSTR hexstr)
// be sure hex codes are 4 wide
//-----------------------------------------------------------------------------
void CIeditError::PadErr(LPSTR hexstr)
{
int c, x, n;
// make sure ro pad up to four places take length, see how far from 4 it is,
// then shift that amount of 0's in
c = lstrlen(hexstr);
x = 4-c;
if (x)
{
// c = char to move (starts at offset len-1)
// n = new posit in string for char
for (--c,n=3; c >= 0; )
hexstr[n--] = hexstr[c--];
// go refill the leading '0's
for (n=0; x>0; x--)
hexstr[n++] = '0';
hexstr[4] = '\0';
}
return;
}
//=============================================================================
// Function: DisplayError(UINT nID, UINT nType)
//-----------------------------------------------------------------------------
void CIeditError::DisplayError(UINT nID, LONG lErr, UINT nType)
{
if (theApp.m_bShowDbgErrCodes)
{
CString szErrStr;
char tmp[10];
szErrStr.LoadString (nID);
if (!m_szLocationStr.IsEmpty())
szErrStr += "\r\n"; szErrStr += m_szLocationStr;
if (lErr != 0)
{
szErrStr += "\r\n"; szErrStr += "Detail code was : 0x";
_itoa (HIWORD (lErr), tmp, 16); szErrStr += tmp;
szErrStr += " : 0x";
_itoa (LOWORD (lErr), tmp, 16); szErrStr += tmp;
}
AfxMessageBox (szErrStr, nType);
}
else
AfxMessageBox (nID, nType);
}
//=============================================================================
// Function: DisplayError(UINT nID, UINT nType, LPCTSTR lpStr1)
//-----------------------------------------------------------------------------
void CIeditError::DisplayError(UINT nID, UINT nType, LPCTSTR lpStr1, LONG lErr)
{
CString szErrStr;
if (theApp.m_bShowDbgErrCodes)
{
char tmp[10];
AfxFormatString1 (szErrStr, nID, lpStr1);
if (!m_szLocationStr.IsEmpty())
szErrStr += "\r\n"; szErrStr += m_szLocationStr;
if (lErr != 0)
{
szErrStr += "\r\n"; szErrStr += "Detail code was : 0x";
_itoa (HIWORD (lErr), tmp, 16); szErrStr += tmp;
szErrStr += " : 0x";
_itoa (LOWORD (lErr), tmp, 16); szErrStr += tmp;
}
}
else
AfxFormatString1 (szErrStr, nID, lpStr1);
AfxMessageBox (szErrStr, nType);
}
//=============================================================================
// Function: DisplayError(UINT nID, UINT nType, LPCTSTR lpStr1, LPCTSTR lpStr2)
//-----------------------------------------------------------------------------
void CIeditError::DisplayError(UINT nID, UINT nType, LPCTSTR lpStr1, LPCTSTR lpStr2, LONG lErr)
{
CString szTmp;
AfxFormatString2 (szTmp, nID, lpStr1, lpStr2);
AfxMessageBox (szTmp, nType);
}
//=============================================================================
// Function: GetActualError ()
//-----------------------------------------------------------------------------
long CIeditError::GetActualError (DWORD force) // defaulted to '0'
{
_DImagedit* pIedit;
_DThumb* pThumb;
_DNrwyad* pAdmin;
DWORD choice = m_err1; // default to setting in m_err1
if (0 != force)
choice = force;
switch (choice)
{
case ErrorInImageEdit :
pIedit = g_pAppOcxs->GetIeditDispatch();
return (pIedit->GetStatusCode ());
break;
case ErrorInAdmin :
pAdmin = g_pAppOcxs->GetAdminDispatch();
return (pAdmin->GetStatusCode ());
break;
case ErrorInThumbnail :
pThumb = g_pAppOcxs->GetThumbDispatch();
return (pThumb->GetStatusCode ());
break;
case ErrorInApplication :
return (m_err2);
break;
}
return (0);
}
//=============================================================================
// Function: HandleOpenError ()
//-----------------------------------------------------------------------------
BOOL CIeditError::HandleOpenError ()
{
UINT nID;
long lErr = GetActualError ();
if (m_err1 != ErrorInApplication)
{
switch (lErr)
{
case CTL_E_OUTOFMEMORY :
nID = IDS_E_OPEN_OUTOFMEMORY;
break;
case CTL_E_DISKFULL :
case CTL_E_BADFILENAME :
case CTL_E_PATHNOTFOUND :
case CTL_E_FILENOTFOUND :
case CTL_E_BADFILENAMEORNUMBER :
nID = IDS_E_OPEN_INVALIDFILENAME;
break;
case CTL_E_PATHFILEACCESSERROR :
case CTL_E_FILEALREADYOPEN :
nID = IDS_E_OPEN_FILEALREADYOPEN;
break;
case CTL_E_INVALIDFILEFORMAT :
case WICTL_E_INVALIDFILETYPE :
nID = IDS_E_OPEN_INVALIDFILEFORMAT;
break;
case WICTL_E_INVALIDCOMPRESSIONTYPE :
case WICTL_E_INVALIDCOMPRESSIONINFO :
nID = IDS_E_OPEN_INVALIDCOMPFORMAT;
break;
case CTL_E_INVALIDPROPERTYVALUE :
case CTL_E_FILEALREADYEXISTS :
case CTL_E_ILLEGALFUNCTIONCALL :
case CTL_E_INVALIDCLIPBOARDFORMAT :
case CTL_E_INVALIDPICTURE :
case CTL_E_PRINTERERROR :
case CTL_E_GETNOTSUPPORTEDATRUNTIME :
case CTL_E_INVALIDPROPERTYARRAYINDEX :
case CTL_E_SETNOTSUPPORTEDATRUNTIME :
case CTL_E_NEEDPROPERTYARRAYINDEX :
case CTL_E_GETNOTSUPPORTED :
case CTL_E_SETNOTSUPPORTED :
nID = IDS_E_HOWDIDWEGETHERE;
break;
default :
nID = IDS_E_NOTCATEGORIZEDOCXERROR;
break;
}
}
else
{
switch (lErr)
{
case E_02_BADPAGENO :
nID = IDS_E_OPEN_INVALIDPAGENUMBER;
break;
case E_15_NOCVIEWFOUND :
default :
nID = IDS_E_INTERNALERROR;
break;
}
}
DisplayError (nID, lErr);
ClearErr ();
return (TRUE);
}
//=============================================================================
// Function: HandlePrintPageError ()
// We are assuming that the only OCX that is involved in performing this menu
// functionality is the Image Edit OCX. ***** If we add other OCX's to do this
// stuff then the following error handler will have to be modified appropriately
//-----------------------------------------------------------------------------
BOOL CIeditError::HandlePrintPageError ()
{
UINT nID = IDS_E_NOTCATEGORIZEDOCXERROR;
long lErr = GetActualError ();
switch (lErr)
{
case CTL_E_OUTOFMEMORY :
nID = IDS_E_PRINTPAGE_OUTOFMEMORY;
break;
case CTL_E_DISKFULL :
break;
case CTL_E_INVALIDFILEFORMAT :
case WICTL_E_INVALIDFILETYPE :
case WICTL_E_INVALIDCOMPRESSIONTYPE :
case WICTL_E_INVALIDCOMPRESSIONINFO :
nID = IDS_E_PRINTPAGE_INVALIDFILEFORMAT;
break;
case CTL_E_PRINTERERROR :
nID = IDS_E_PRINTPAGE_PRINTERERROR;
break;
}
DisplayError (nID, lErr);
ClearErr ();
return (TRUE);
}
//=============================================================================
// Function: HandleDeletePageError ()
// There are three distinct OCX's involved in this process :
// 1) Admin - this actually does the delete from the file
// 2) ImageEdit - to redisplay the file
// 3) Thumbnail - to redisplay the file
//-----------------------------------------------------------------------------
BOOL CIeditError::HandleDeletePageError ()
{
UINT nID = IDS_E_NOTCATEGORIZEDOCXERROR;
long lErr = GetActualError ();
if (m_err1 == ErrorInAdmin)
{
// the pages MAY not have been deleted yet!!
switch (lErr)
{
case WICTL_E_PAGEINUSE :
nID = IDS_E_OPEN_FILEALREADYOPEN;
break;
case CTL_E_OUTOFMEMORY :
nID = IDS_E_DELETEPAGE_ADMIN_OUTOFMEMORY;
break;
}
}
else
{
// the pages are GONZO!! - either the Thumbnail or ImageEdit OCX croaked
switch (lErr)
{
case CTL_E_OUTOFMEMORY :
nID = IDS_E_DELETEPAGE_THMIMG_OUTOFMEMORY;
break;
}
}
DisplayError (nID, lErr);
ClearErr ();
return (TRUE);
}
//=============================================================================
// Function: HandlePageAppendExistingError ()
// There are three distinct OCX's involved in this process :
// 1) Admin - this actually does the append from the file
// 2) ImageEdit - to redisplay the file
// 3) Thumbnail - to redisplay the file
//-----------------------------------------------------------------------------
BOOL CIeditError::HandlePageAppendExistingError ()
{
UINT nID = IDS_E_NOTCATEGORIZEDOCXERROR;
long lErr = GetActualError ();
if (m_err1 == ErrorInAdmin)
{
// the pages MAY not have been appended yet!!
switch (lErr)
{
case CTL_E_OUTOFMEMORY :
nID = IDS_E_APPENDPAGE_ADMIN_OUTOFMEMORY;
break;
case CTL_E_INVALIDFILEFORMAT :
case WICTL_E_INVALIDPAGETYPE :
case WICTL_E_INVALIDFILETYPE :
case WICTL_E_INVALIDCOMPRESSIONTYPE :
case WICTL_E_INVALIDCOMPRESSIONINFO :
nID = IDS_E_INVALIDFILEFORMAT;
break;
case CTL_E_DISKFULL :
nID = IDS_E_DISK_FULL;
break;
}
}
else
{
// the pages are appended - either the Thumbnail or ImageEdit OCX croaked
switch (lErr)
{
case CTL_E_OUTOFMEMORY :
nID = IDS_E_APPENDPAGE_THMIMG_OUTOFMEMORY;
break;
}
}
DisplayError (nID, lErr);
ClearErr ();
return (TRUE);
}
//=============================================================================
// Function: HandlePageInsertExistingError ()
// There are three distinct OCX's involved in this process :
// 1) Admin - this actually does the insert from the file
// 2) ImageEdit - to redisplay the file
// 3) Thumbnail - to redisplay the file
//-----------------------------------------------------------------------------
BOOL CIeditError::HandlePageInsertExistingError ()
{
UINT nID = IDS_E_NOTCATEGORIZEDOCXERROR;
long lErr = GetActualError ();
if (m_err1 == ErrorInAdmin)
{
// the pages MAY not have been deleted yet!!
switch (lErr)
{
case CTL_E_OUTOFMEMORY :
nID = IDS_E_INSERTPAGE_ADMIN_OUTOFMEMORY;
break;
case CTL_E_INVALIDFILEFORMAT :
case WICTL_E_INVALIDPAGETYPE :
case WICTL_E_INVALIDFILETYPE :
case WICTL_E_INVALIDCOMPRESSIONTYPE :
case WICTL_E_INVALIDCOMPRESSIONINFO :
nID = IDS_E_INVALIDFILEFORMAT;
break;
case CTL_E_DISKFULL :
nID = IDS_E_DISK_FULL;
break;
}
}
else
{
// the pages are GONZO!! - either the Thumbnail or ImageEdit OCX croaked
switch (lErr)
{
case CTL_E_OUTOFMEMORY :
nID = IDS_E_INSERTPAGE_THMIMG_OUTOFMEMORY;
break;
}
}
DisplayError (nID, lErr);
ClearErr ();
return (TRUE);
}
//=============================================================================
// Function: HandleFilePickError ()
// Only the Admin OCX is involved in this error situation. We have tried to
// pick a file to either insert, append etc. but it has failed!
//-----------------------------------------------------------------------------
BOOL CIeditError::HandleFilePickError ()
{
UINT nID;
long lErr = GetActualError ();
switch (lErr)
{
case CTL_E_OUTOFMEMORY :
nID = IDS_E_FILEPICK_OUTOFMEMORY;
break;
case CTL_E_FILEALREADYOPEN :
nID = IDS_E_OPEN_FILEALREADYOPEN;
break;
case CTL_E_INVALIDFILEFORMAT :
case WICTL_E_INVALIDCOMPRESSIONTYPE :
case WICTL_E_INVALIDCOMPRESSIONINFO :
nID = IDS_E_INVALIDFILEFORMAT;
break;
default :
nID = IDS_E_NOTCATEGORIZEDOCXERROR;
break;
}
DisplayError (nID, lErr);
ClearErr ();
return (TRUE);
}
//=============================================================================
// Function: HandlePageMovementError ()
//-----------------------------------------------------------------------------
BOOL CIeditError::HandlePageMovementError ()
{
UINT nID = IDS_E_NOTCATEGORIZEDOCXERROR;
long lErr = GetActualError ();
switch (lErr)
{
case CTL_E_OUTOFMEMORY :
nID = IDS_E_PGMVMT_OUTOFMEMORY;
break;
case CTL_E_INVALIDFILEFORMAT :
case WICTL_E_INVALIDFILETYPE :
case WICTL_E_INVALIDCOMPRESSIONTYPE :
case WICTL_E_INVALIDCOMPRESSIONINFO :
nID = IDS_E_PGMVMT_INVALIDFILEFORMAT;
break;
case WICTL_E_INVALIDDISPLAYSCALE:
nID = IDS_E_INVALIDDISPLAYSCALE;
break;
default :
break;
}
DisplayError (nID, lErr);
ClearErr ();
return (TRUE);
}
//=============================================================================
// Function: HandlePageConvertError ()
//-----------------------------------------------------------------------------
BOOL CIeditError::HandlePageConvertError ()
{
UINT nID = IDS_E_NOTCATEGORIZEDOCXERROR;
long lErr = GetActualError ();
switch (lErr)
{
case CTL_E_OUTOFMEMORY :
nID = IDS_E_CONVERT_OUTOFMEMORY;
break;
case CTL_E_DISKFULL :
nID = IDS_E_DISK_FULL;
break;
default :
break;
}
DisplayError (nID, lErr);
ClearErr ();
return (TRUE);
}
//=============================================================================
// Function: HandleImageEditOcxInitError ()
//-----------------------------------------------------------------------------
BOOL CIeditError::HandleImageEditOcxInitError ()
{
UINT nID;
switch (m_err2)
{
case E_08_CLSID :
case E_08_CREATEITEM :
case E_08_QUERYIDISP :
case E_08_FINDCONNPT :
case E_08_QUERYICPC :
case E_08_GETEVENTSIID :
nID = IDS_E_IMAGEEDITOCX_INIT;
break;
}
DisplayError (nID, m_err2);
ClearErr ();
return (TRUE);
}
//=============================================================================
// Function: HandleThumbnailOcxInitError ()
//-----------------------------------------------------------------------------
BOOL CIeditError::HandleThumbnailOcxInitError ()
{
UINT nID;
switch (m_err2)
{
case E_08_CLSID :
case E_08_CREATEITEM :
case E_08_QUERYIDISP :
case E_08_FINDCONNPT :
case E_08_QUERYICPC :
case E_08_GETEVENTSIID :
nID = IDS_E_THUMBNAILOCX_INIT;
break;
}
DisplayError (nID, m_err2);
ClearErr ();
return (TRUE);
}
//=============================================================================
// Function: HandleAdminOcxInitError ()
//-----------------------------------------------------------------------------
BOOL CIeditError::HandleAdminOcxInitError ()
{
UINT nID;
switch (m_err2)
{
case E_08_CLSID :
case E_08_CREATEITEM :
case E_08_QUERYIDISP :
case E_08_FINDCONNPT :
case E_08_QUERYICPC :
case E_08_GETEVENTSIID :
nID = IDS_E_ADMINOCX_INIT;
break;
}
DisplayError (nID, m_err2);
ClearErr ();
return (TRUE);
}
//=============================================================================
// Function: HandleScanOcxInitError ()
//-----------------------------------------------------------------------------
BOOL CIeditError::HandleScanOcxInitError ()
{
UINT nID;
switch (m_err2)
{
case E_08_CLSID :
case E_08_CREATEITEM :
case E_08_QUERYIDISP :
case E_08_FINDCONNPT :
case E_08_QUERYICPC :
case E_08_GETEVENTSIID :
nID = IDS_E_SCANOCX_INIT;
break;
}
DisplayError (nID, m_err2);
ClearErr ();
return (TRUE);
}
//=============================================================================
// Function: HandleSavingError ()
//-----------------------------------------------------------------------------
BOOL CIeditError::HandleSavingError ()
{
UINT nID = IDS_E_NOTCATEGORIZEDOCXERROR;
long lErr = GetActualError ();
if (m_err1 == ErrorInImageEdit)
{
// error happened on save !
switch (lErr)
{
case CTL_E_PATHFILEACCESSERROR :
nID = IDS_E_PATHFILEACCESSERROR;
break;
case CTL_E_OUTOFMEMORY :
nID = IDS_E_SAVE_IEDIT_OUTOFMEMORY;
break;
case CTL_E_DISKFULL :
nID = IDS_E_SAVE_IEDIT_DISKFULL;
break;
//added error handling for invalid file format, i.e. trying
//to write a 4 bit image.
case CTL_E_INVALIDFILEFORMAT :
case WICTL_E_INVALIDFILETYPE :
case WICTL_E_INVALIDPAGETYPE :
nID = IDS_E_OPEN_INVALIDFILEFORMAT;
break;
default :
nID = IDS_E_SAVE_SAVEERROR;
break;
}
}
else
{
// the Save is done - but the thumbnail control barfed !!
switch (lErr)
{
case CTL_E_OUTOFMEMORY :
nID = IDS_E_SAVE_THUMB_OUTOFMEMORY;
break;
case CTL_E_DISKFULL :
nID = IDS_E_SAVE_THUMB_DISKFULL;
break;
default :
nID = IDS_E_SAVE_SAVEERROR;
break;
}
}
DisplayError (nID, lErr, MB_ICONEXCLAMATION|MB_OK);
ClearErr ();
return (TRUE);
}
//=============================================================================
// Function: SpecifyLocation (LPCTSTR szfile, int linenum)
//-----------------------------------------------------------------------------
void CIeditError::SpecifyLocation (LPCTSTR szfile, int linenum)
{
m_szLocationStr = szfile;
char szTmp[10];
_itoa (linenum, szTmp, 10);
m_szLocationStr += szTmp;
}
//=============================================================================
// Function: HandleVerifyImageError (LPCTSTR szFileName)
//-----------------------------------------------------------------------------
BOOL CIeditError::HandleVerifyImageError (LPCTSTR szFileName)
{
UINT nID = IDS_E_NOTCATEGORIZEDOCXERROR;
long lErr = GetActualError ();
switch (lErr)
{
case CTL_E_OUTOFMEMORY :
nID = IDS_E_FILEPICK_OUTOFMEMORY;
break;
case CTL_E_INVALIDFILEFORMAT :
case WICTL_E_INVALIDCOMPRESSIONTYPE :
case WICTL_E_INVALIDCOMPRESSIONINFO :
nID = IDS_E_INVALIDFILEFORMAT;
break;
case CTL_E_PATHFILEACCESSERROR :
nID = IDS_E_OPEN_FILEALREADYOPEN;
break;
case CTL_E_FILENOTFOUND :
nID = IDS_FILEDOESNOTEXIST;
DisplayError (nID, MB_OK | MB_ICONSTOP, szFileName, lErr);
ClearErr ();
return (TRUE);
default :
nID = IDS_E_NOTCATEGORIZEDOCXERROR;
break;
}
DisplayError (nID, lErr);
ClearErr ();
return (TRUE);
}
//=============================================================================
// Function: HandleVerifyImageError (LPCTSTR szFileName)
//-----------------------------------------------------------------------------
BOOL CIeditError::HandleNewDocumentError ()
{
UINT nID = IDS_E_NOTCATEGORIZEDOCXERROR;
long lErr = GetActualError ();
switch (lErr)
{
case CTL_E_OUTOFMEMORY :
nID = IDS_E_NEWDOC_OUTOFMEMORY;
break;
case CTL_E_DISKFULL :
nID = IDS_E_DISK_FULL;
break;
}
DisplayError (nID, lErr);
ClearErr ();
return (TRUE);
}
//=============================================================================
// Function: HandleZoomError ()
//-----------------------------------------------------------------------------
BOOL CIeditError::HandleZoomError ()
{
UINT nID = IDS_E_NOTCATEGORIZEDOCXERROR;
long lErr = GetActualError ();
switch (lErr)
{
case CTL_E_OUTOFMEMORY :
nID = IDS_E_ZOOM_CANNOTZOOM;
break;
case WICTL_E_INVALIDDISPLAYSCALE:
nID = IDS_E_INVALIDDISPLAYSCALE;
break;
default :
nID = IDS_E_NOTCATEGORIZEDOCXERROR;
break;
}
DisplayError (nID, lErr);
ClearErr ();
return (TRUE);
}
/*
case CTL_E_OUTOFMEMORY :
case CTL_E_FILENOTFOUND :
case CTL_E_FILEALREADYOPEN :
case CTL_E_FILEALREADYEXISTS :
case CTL_E_DISKFULL :
case CTL_E_BADFILENAME :
case CTL_E_PATHFILEACCESSERROR :
case CTL_E_PATHNOTFOUND :
case CTL_E_INVALIDFILEFORMAT :
case CTL_E_INVALIDPROPERTYVALUE :
case CTL_E_BADFILENAMEORNUMBER :
case WICTL_E_INVALIDFILETYPE :
case WICTL_E_INVALIDCOMPRESSIONTYPE :
case WICTL_E_INVALIDCOMPRESSIONINFO :
case CTL_E_ILLEGALFUNCTIONCALL :
case CTL_E_INVALIDCLIPBOARDFORMAT :
case CTL_E_INVALIDPICTURE :
case CTL_E_PRINTERERROR :
case CTL_E_GETNOTSUPPORTEDATRUNTIME :
case CTL_E_INVALIDPROPERTYARRAYINDEX :
case CTL_E_SETNOTSUPPORTEDATRUNTIME :
case CTL_E_NEEDPROPERTYARRAYINDEX :
case CTL_E_GETNOTSUPPORTED :
case CTL_E_SETNOTSUPPORTED :
*/