NT4/private/wangview/norway/wangcmn/norermap.cpp
2020-09-30 17:12:29 +02:00

731 lines
70 KiB
C++

// norermap.cpp : implementation of the Norway error handler
//
// This function was written in order to standardize the handling
// of errors, specifically Open/image errors.
#include "stdafx.h" // Gotta have it (precompile headers...)
#include "norermap.h" // For this class...
#include "common.h" // Publics for the Controls (for errors)
#include "admin.h"
#include "resource.h"
#include "image.h"
#include "ocxscan.h"
#include "thumb.h"
#include "pageopts.h"
#include <oierror.h>
#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif
// The following is a list of ALL the known common OLE SCODE errors
// We should add OUR NORWAY common (and even the individual control errors)
// here...
static OLEErrMap OLE_SCode_Map[] =
{
// SCODE error StringID for SCode's error HelpID for SCode's error
// ----------------------------------|--------------------------------|----------------------------------
// Standard OLE SCODEs...
{CTL_E_ILLEGALFUNCTIONCALL, IDS_E_ILLEGALFUNCTIONCALL, IDH_E_ILLEGALFUNCTIONCALL},
{CTL_E_OVERFLOW, IDS_E_OVERFLOW, IDH_E_OVERFLOW},
{CTL_E_OUTOFMEMORY, IDS_E_OUTOFMEMORY, IDH_E_OUTOFMEMORY},
{CTL_E_DIVISIONBYZERO, IDS_E_DIVISIONBYZERO, IDH_E_DIVISIONBYZERO},
{CTL_E_OUTOFSTRINGSPACE, IDS_E_OUTOFSTRINGSPACE, IDH_E_OUTOFSTRINGSPACE},
{CTL_E_OUTOFSTACKSPACE, IDS_E_OUTOFSTACKSPACE, IDH_E_OUTOFSTACKSPACE},
{CTL_E_BADFILENAMEORNUMBER, IDS_E_BADFILENAMEORNUMBER, IDH_E_BADFILENAMEORNUMBER},
{CTL_E_FILENOTFOUND, IDS_E_FILENOTFOUND, IDH_E_FILENOTFOUND},
{CTL_E_BADFILEMODE, IDS_E_BADFILEMODE, IDH_E_BADFILEMODE},
{CTL_E_FILEALREADYOPEN, IDS_E_FILEALREADYOPEN, IDH_E_FILEALREADYOPEN},
{CTL_E_DEVICEIOERROR, IDS_E_DEVICEIOERROR, IDH_E_DEVICEIOERROR},
{CTL_E_FILEALREADYEXISTS, IDS_E_FILEALREADYEXISTS, IDH_E_FILEALREADYEXISTS},
{CTL_E_BADRECORDLENGTH, IDS_E_BADRECORDLENGTH, IDH_E_BADRECORDLENGTH},
{CTL_E_DISKFULL, IDS_E_DISKFULL, IDH_E_DISKFULL},
{CTL_E_BADRECORDNUMBER, IDS_E_BADRECORDNUMBER, IDH_E_BADRECORDNUMBER},
{CTL_E_BADFILENAME, IDS_E_BADFILENAME, IDH_E_BADFILENAME},
{CTL_E_TOOMANYFILES, IDS_E_TOOMANYFILES, IDH_E_TOOMANYFILES},
{CTL_E_DEVICEUNAVAILABLE, IDS_E_DEVICEUNAVAILABLE, IDH_E_DEVICEUNAVAILABLE},
{CTL_E_PERMISSIONDENIED, IDS_E_PERMISSIONDENIED, IDH_E_PERMISSIONDENIED},
{CTL_E_DISKNOTREADY, IDS_E_DISKNOTREADY, IDH_E_DISKNOTREADY},
{CTL_E_PATHFILEACCESSERROR, IDS_E_PATHFILEACCESSERROR, IDH_E_PATHFILEACCESSERROR},
{CTL_E_PATHNOTFOUND, IDS_E_PATHNOTFOUND, IDH_E_PATHNOTFOUND},
{CTL_E_INVALIDPATTERNSTRING, IDS_E_INVALIDPATTERNSTRING, IDH_E_INVALIDPATTERNSTRING},
{CTL_E_INVALIDUSEOFNULL, IDS_E_INVALIDUSEOFNULL, IDH_E_INVALIDUSEOFNULL},
{CTL_E_INVALIDFILEFORMAT, IDS_E_INVALIDFILEFORMAT, IDH_E_INVALIDFILEFORMAT},
{CTL_E_INVALIDPROPERTYVALUE, IDS_E_INVALIDPROPERTYVALUE, IDH_E_INVALIDPROPERTYVALUE},
{CTL_E_INVALIDPROPERTYARRAYINDEX, IDS_E_INVALIDPROPERTYARRAYINDEX, IDH_E_INVALIDPROPERTYARRAYINDEX},
{CTL_E_SETNOTSUPPORTEDATRUNTIME, IDS_E_SETNOTSUPPORTEDATRUNTIME, IDH_E_SETNOTSUPPORTEDATRUNTIME},
{CTL_E_SETNOTSUPPORTED, IDS_E_SETNOTSUPPORTED, IDH_E_SETNOTSUPPORTED},
{CTL_E_NEEDPROPERTYARRAYINDEX, IDS_E_NEEDPROPERTYARRAYINDEX, IDH_E_NEEDPROPERTYARRAYINDEX},
{CTL_E_SETNOTPERMITTED, IDS_E_SETNOTPERMITTED, IDH_E_SETNOTPERMITTED},
{CTL_E_GETNOTSUPPORTEDATRUNTIME, IDS_E_GETNOTSUPPORTEDATRUNTIME, IDH_E_GETNOTSUPPORTEDATRUNTIME},
{CTL_E_GETNOTSUPPORTED, IDS_E_GETNOTSUPPORTED, IDH_E_GETNOTSUPPORTED},
{CTL_E_PROPERTYNOTFOUND, IDS_E_PROPERTYNOTFOUND, IDH_E_PROPERTYNOTFOUND},
{CTL_E_INVALIDCLIPBOARDFORMAT, IDS_E_INVALIDCLIPBOARDFORMAT, IDH_E_INVALIDCLIPBOARDFORMAT},
{CTL_E_INVALIDPICTURE, IDS_E_INVALIDPICTURE, IDH_E_INVALIDPICTURE},
{CTL_E_PRINTERERROR, IDS_E_PRINTERERROR, IDH_E_PRINTERERROR},
{CTL_E_CANTSAVEFILETOTEMP, IDS_E_CANTSAVEFILETOTEMP, IDH_E_CANTSAVEFILETOTEMP},
{CTL_E_SEARCHTEXTNOTFOUND, IDS_E_SEARCHTEXTNOTFOUND, IDH_E_SEARCHTEXTNOTFOUND},
{CTL_E_REPLACEMENTSTOOLONG, IDS_E_REPLACEMENTSTOOLONG, IDH_E_REPLACEMENTSTOOLONG},
// Our common OLE SCODEs...
{WICTL_E_INVALIDICON, IDS_WIE_INVALIDICON, IDH_WIE_INVALIDICON},
{WICTL_E_INTERNALERROR, IDS_WIE_INTERNALERROR, IDH_WIE_INTERNALERROR},
// Thumbnail specific errors...
{WICTL_E_INVALIDTHUMBSCALE, IDS_WIE_INVALIDTHUMBSCALE, IDH_WIE_INVALIDTHUMBSCALE},
// ImageEdit specific errors..
{WICTL_E_NOIMAGEINWINDOW, IDS_WIE_NOIMAGEINWINDOW, IDH_WIE_NOIMAGEINWINDOW},
{WICTL_E_NOIMAGESPECIFIED, IDS_WIE_NOIMAGESPECIFIED, IDH_WIE_NOIMAGESPECIFIED},
{WICTL_E_INVALIDANNOTATIONSELECTED, IDS_WIE_INVALIDANNOTATIONSELECTED, IDH_WIE_INVALIDANNOTATIONSELECTED},
{WICTL_E_SETNOTSUPPORTEDATDESIGNTIME, IDS_WIE_SETNOTSUPPORTEDATDESIGNTIME, IDH_WIE_SETNOTSUPPORTEDATDESIGNTIME},
{WICTL_E_NOSELECTIONRECTDRAWN, IDS_WIE_NOSELECTIONRECTDRAWN, IDH_WIE_NOSELECTIONRECTDRAWN},
{WICTL_E_OPTIONALPARAMETERSNEEDED, IDS_WIE_OPTIONALPARAMETERSNEEDED, IDH_WIE_OPTIONALPARAMETERSNEEDED},
{WICTL_E_COULDNOTGETFONTATTRIBUTES, IDS_WIE_COULDNOTGETFONTATTRIBUTES, IDH_WIE_COULDNOTGETFONTATTRIBUTES},
{WICTL_E_INVALIDANNOTATIONTYPE, IDS_WIE_INVALIDANNOTATIONTYPE, IDH_WIE_INVALIDANNOTATIONTYPE},
{WICTL_E_INVALIDPAGETYPE, IDS_WIE_INVALIDPAGETYPE, IDH_WIE_INVALIDPAGETYPE},
{WICTL_E_INVALIDCOMPRESSIONTYPE, IDS_WIE_INVALIDCOMPRESSIONTYPE, IDH_WIE_INVALIDCOMPRESSIONTYPE},
{WICTL_E_INVALIDCOMPRESSIONINFO, IDS_WIE_INVALIDCOMPRESSIONINFO, IDH_WIE_INVALIDCOMPRESSIONINFO},
{WICTL_E_UNABLETOCREATETOOLPALETTE, IDS_WIE_UNABLETOCREATETOOLPALETTE, IDH_WIE_UNABLETOCREATETOOLPALETTE},
{WICTL_E_TOOLPALETTEALREADYDISPLAYED, IDS_WIE_TOOLPALETTEALREADYDISPLAYED, IDH_WIE_TOOLPALETTEALREADYDISPLAYED},
{WICTL_E_TOOLPALETTENOTDISPLAYED, IDS_WIE_TOOLPALETTENOTDISPLAYED, IDH_WIE_TOOLPALETTENOTDISPLAYED},
{WICTL_E_INVALIDDISPLAYSCALE, IDS_WIE_INVALIDDISPLAYSCALE, IDH_WIE_INVALIDDISPLAYSCALE},
{WICTL_E_INVALIDRECT, IDS_WIE_INVALIDRECT, IDH_WIE_INVALIDRECT},
{WICTL_E_INVALIDDISPLAYOPTION, IDS_WIE_INVALIDDISPLAYOPTION, IDH_WIE_INVALIDDISPLAYOPTION},
{WICTL_E_INVALIDPAGE, IDS_WIE_INVALIDPAGE, IDH_WIE_INVALIDPAGE},
{WICTL_E_NOANNOSELECTED, IDS_WIE_NOANNOSELECTED, IDH_WIE_NOANNOSELECTED},
{WICTL_E_DELETEFILEERROR, IDS_WIE_DELETEFILEERROR, IDH_WIE_DELETEFILEERROR},
// AnoButton specific errors...
// Admin specific errors...
{WICTL_E_CANCELPRESSED, IDS_WIE_CANCELPRESSED, IDH_WIE_CANCELPRESSED},
{WICTL_E_PAGEINUSE, IDS_WIE_PAGEINUSE, IDH_WIE_PAGEINUSE},
// Scan specific errors...
{WICTL_E_SCANNER_ERROR, IDS_WIE_SCANNER_ERROR, IDH_WIE_SCANNER_ERROR},
{WICTL_E_ALREADY_OPEN, IDS_WIE_ALREADY_OPEN, IDH_WIE_ALREADY_OPEN},
{WICTL_E_BAD_SIZE, IDS_WIE_BAD_SIZE, IDH_WIE_BAD_SIZE},
{WICTL_E_START_SCAN, IDS_WIE_START_SCAN, IDH_WIE_START_SCAN},
{WICTL_E_TIME_OUT, IDS_WIE_TIME_OUT, IDH_WIE_TIME_OUT},
{WICTL_E_NOT_OPEN, IDS_WIE_NOT_OPEN, IDH_WIE_NOT_OPEN},
{WICTL_E_INVALID_REG, IDS_WIE_INVALID_REG, IDH_WIE_INVALID_REG},
{WICTL_E_NO_FEEDER, IDS_WIE_NO_FEEDER, IDH_WIE_NO_FEEDER},
{WICTL_E_NO_PAPER, IDS_WIE_NO_PAPER, IDH_WIE_NO_PAPER},
{WICTL_E_FILE_LIMIT, IDS_WIE_FILE_LIMIT, IDH_WIE_FILE_LIMIT},
{WICTL_E_NO_POWER, IDS_WIE_NO_POWER, IDH_WIE_NO_POWER},
{WICTL_E_COVER_OPEN, IDS_WIE_COVER_OPEN, IDH_WIE_COVER_OPEN},
{WICTL_E_ABORT, IDS_WIE_ABORT, IDH_WIE_ABORT},
{WICTL_E_SCANNER_JAMMED, IDS_WIE_SCANNER_JAMMED, IDH_WIE_SCANNER_JAMMED},
{WICTL_E_BUSY, IDS_WIE_BUSY, IDH_WIE_BUSY},
{0,0,0} // End-of-Table signified by all-zero entry!
};
// The following is a snapshot of the O/i errors in OIERROR.H (7/6/95)
// The entire set of errors is represented here.
// Unexpected or unanticipated errors are commented out. The legend for
// the commented out errors is as follows:
//
// C Client-server / Doc mgr not supported
// O OCR not supported
// F O/i Fax not used
// X Error should not be encountered
// ? Not found in O/i source (7/5/95 source)
// B Error should NOT be encountered by control user, maybe BUG in control
// . Error NOT found in O/i source as of 7/5/95
// (NOTE: NO O/i Scan code is 'checked-in' at this time, and therefore
// ALL scan errors are currently commented out!)
//
// REMEMBER that it is MOST important to present information to the user
// regarding what the user can to to rememdy the problem and less
// important that the end user know exactly what the internal error is.
// For example OUTOFMEMORY may be valid for much more that OUTOFMEMORY...
//
static OiErrMap OI_Map[] =
{
// Open/image error SCode for this O/i error
// ----------------------------------|------------------------------
// .{WINDOWNOTCREATED , }, // IMGUIE + 1x11 Cannot create window
//X.{NOAPPMENU , }, // IMGUIE + 1x12 Invalid hWnd for Appmenu
//X.{NOAPPPOPUP , }, // IMGUIE + 1x13 Invalid hWnd for Popmenu
//X.{NOAPPLIST , }, // IMGUIE + 0x04 Invalid hWnd for Applist
{NOMEMORY ,CTL_E_OUTOFMEMORY }, // IMGUIE + 0x05 Cannot allocate memory
// .{BADWNDHANDLE , }, // IMGUIE + 0x06 Invalid window handle
{CANTINVOKEDIALOGBOX ,CTL_E_OUTOFMEMORY }, // IMGUIE + 0x07 Cannot execute dialog box
// .{BADMEMORYHANDLE , }, // IMGUIE + 0x08 Invalid memory handle
{CANTLOCKDATASEG ,CTL_E_OUTOFMEMORY }, // IMGUIE + 0x09 LockData call failed
{CANTGLOBALLOCK ,CTL_E_OUTOFMEMORY }, // IMGUIE + 0x0a GlobalLock call failed
// .{RESOURCESNOTLOADED , }, // IMGUIE + 0x0b Cannot load resource
{CANCELPRESSED ,WICTL_E_CANCELPRESSED }, // IMGUIE + 0x0c Cancel was pressed
// .{CANTLOADPRTDRVR , }, // IMGUIE + 0x0d Printer driver load failed
{NOPRTAVAILABLE ,CTL_E_PRINTERERROR }, // IMGUIE + 0x0f No printer available
// .{CANTMAKEINSTANCE , }, // IMGUIE + 0x00 Cannot make proc instance
// .{CANTGETPROPLIST , }, // IMGUIE + 0x00 Cannot get property list, possible memory allocation error
// .{CANTGETPARENTHANDLE , }, // IMGUIE + 0x02 Cannot get parent window hWnd
// .{FUNCTIONPTRNULL , }, // IMGUIE + 0x03 Callback function pointer is NULL
// .{CANTGETMENUHANDLE , }, // IMGUIE + 0x04 Cannot get handle to menu
{CANTOPENSRCFILE ,CTL_E_FILENOTFOUND }, // IMGUIE + 0x05 Cannot open source file
{CANTOPENDESTFILE ,CTL_E_FILENOTFOUND }, // IMGUIE + 0x06 Cannot open destination file
{DESTFILEEXISTS ,CTL_E_FILEALREADYEXISTS }, // IMGUIE + 0x07 Destination file exists
// .{CANTPOSITIONSRCFILE , }, // IMGUIE + 0x08 Cannot position source file
// .{CANTPOSITIONDESTFILE , }, // IMGUIE + 0x09 Cannot position destination file
{CANTREADSRCFILE ,CTL_E_PATHFILEACCESSERROR }, // IMGUIE + 0x0a Cannot read source file
{CANTWRITEDESTFILE ,CTL_E_PATHFILEACCESSERROR }, // IMGUIE + 0x0b Cannot write destination file
{CANTCOPYTOITSELF ,CTL_E_FILEALREADYEXISTS }, // IMGUIE + 0x0c Cannot copy to itself
{CANTCOPYTOTHEMSELVES ,CTL_E_FILEALREADYEXISTS }, // IMGUIE + 0x0d Cannot copy to themselves
// .{CANTFREEMEMORY , }, // IMGUIE + 0x20 Cannot free memory
// .{MEMORYSTILLLOCKED , }, // IMGUIE + 0x20 Memory is locked
// .{INVFILETEMPLATE , }, // IMGUIE + 0x22 Invalid file template
{INVFILEEXTENSION ,CTL_E_BADFILENAME }, // IMGUIE + 0x23 Invalid file template
// .{BADCONTROLID , }, // IMGUIE + 0x24 Invalid control ID passed to API
// .{CANTOPENHELP , }, // IMGUIE + 0x25 Cannot open help file; check path for help text file
// .{HELPFAIL , }, // IMGUIE + 0x26 Unexpected help failure
{CANTCREATEWIND ,CTL_E_OUTOFMEMORY }, // IMGUIE + 0x0a Cannot create OPEN/image window
// .{CANTLOADACCELS , }, // IMGUIE + 0x28 Cannot load OPEN/image accelerators
// .{CANTLOADICON , }, // IMGUIE + 0x29 Cannot load icon
// .{INVDRIVENAME , }, // IMGUIE + 0x2a Invalid drive name
// .{CANTCHGMENU , }, // IMGUIE + 0x2b ChangeMenu call failed
// .{CANTCREATEMENU , }, // IMGUIE + 0x2c CreateMenu call failed
{CANTREGISTERWIN ,CTL_E_OUTOFMEMORY }, // IMGUIE + 0x2d RegisterClass call failed
// .{CANTLOADLIBRARY , }, // IMGUIE + 0x2e Cannot dynamically load library
//C.{INVCABINETNAME , }, // IMGUIE + 0x50 Invalid cabinet name specified
//C.{INVDRAWERNAME , }, // IMGUIE + 0x50 Invalid drawer name
//C.{INVFOLDERNAME , }, // IMGUIE + 0x52 Invalid folder name specified
//C.{INVDOCNAME , }, // IMGUIE + 0x53 Invalid document name specified
//C.{INVDOCTEMPLATE , }, // IMGUIE + 0x54 Invalid document template
//C.{DOCZEROPAGES , }, // IMGUIE + 0x55 Document contains no pages
//C.{FOLDNOTSPECIFIED , }, // IMGUIE + 0x56 Folder name not specified
//C.{TEMPLATENOTSPECIFIED , }, // IMGUIE + 0x57 Template name not specified
//C.{DOCNOTSPECIFIED , }, // IMGUIE + 0x58 Document name not specified
//C.{NOSERVERSELECTED , }, // IMGUIE + 0x59 Server not selected
//C.{NOSERVERS , }, // IMGUIE + 0x60 No servers found
// .{NOVOLUMESELECTED , }, // IMGUIE + 0x60 Volume not selected
// .{NOVOLUMES , }, // IMGUIE + 0x62 No volume found
// .{INVALIDKEYWORD , }, // IMGUIE + 0x63 Invalid Keyword
{ERROR_PAGENUM ,WICTL_E_INVALIDPAGE }, // IMGUIE + 0x64 Invalid page number
{ERROR_PAGERANGE ,WICTL_E_INVALIDPAGE }, // IMGUIE + 0x65 Invalid page range
//C.{CABNOTEXIST , }, // IMGUIE + 0x66 Cabinet does not exist
//C.{DRAWNOTEXIST , }, // IMGUIE + 0x67 Drawer does not exist
//C.{FOLDNOTEXIST , }, // IMGUIE + 0x68 Folder does not exist
//C.{DOCNOTEXIST , }, // IMGUIE + 0x69 Document does not exist
//C.{TOOMANYDOCS , }, // IMGUIE + 0x70 Too many documents; re-enter selection criteria
//C.{PATH_NOT_COMPATIBLE , }, // IMGUIE + 0x70 Path and/or files are not on the server. Select server path/files only.
// .{ERROR_PARSING_FILESPEC , }, // IMGUIE + 0x72 Cannot parse file name.
{FUNCTIONINVPARM ,0 }, // IMGUIE + 0x73 NULL or invalid parameter
{FUNCTIONDISABLED ,CTL_E_ILLEGALFUNCTIONCALL }, // IMGUIE + 0x74 function has been disabled
{DISPLAY_CANTALLOC ,CTL_E_OUTOFMEMORY }, // DISPLAY_ERROR_MSB + 0x00 Memory allocation failure
// .{DISPLAY_CANTFREE , }, // DISPLAY_ERROR_MSB + 0x03 Memory free failure
{DISPLAY_CANTLOCK ,CTL_E_OUTOFMEMORY }, // DISPLAY_ERROR_MSB + 0x04 Memory lock failure
// .{DISPLAY_CANTUNLOCK , }, // DISPLAY_ERROR_MSB + 0x05 Memory unlock failed
{DISPLAY_WHANDLEINVALID ,CTL_E_OUTOFMEMORY }, // DISPLAY_ERROR_MSB + 0x07 Invalid window handle
{DISPLAY_DATACORRUPTED ,CTL_E_INVALIDFILEFORMAT }, // DISPLAY_ERROR_MSB + 0x0e Internal data format error
{DISPLAY_IHANDLEINVALID ,WICTL_E_NOIMAGEINWINDOW }, // DISPLAY_ERROR_MSB + 0x0f No image for this window
{DISPLAY_NOTEMPCREATE , }, // DISPLAY_ERROR_MSB + 0x00 Cannot create temp file
// .{DISPLAY_NOTEMPOPEN , }, // DISPLAY_ERROR_MSB + 0x02 Cannot open temp file
// .{DISPLAY_NOTEMPDELETE , }, // DISPLAY_ERROR_MSB + 0x03 Cannot delete temp file
// .{DISPLAY_NOTEMPACCESS , }, // DISPLAY_ERROR_MSB + 0x04 Cannot access temp file
// .{DISPLAY_NOTEMPCLOSE , }, // DISPLAY_ERROR_MSB + 0x05 Cannot close temp file
{DISPLAY_INVALIDSCALE ,WICTL_E_INVALIDDISPLAYSCALE }, // DISPLAY_ERROR_MSB + 0x20 Invalid scale option
// .{DISPLAY_INVALIDSCROLL , }, // DISPLAY_ERROR_MSB + 0x22 Invalid scroll option
{DISPLAY_INVALIDDISTANCE ,WICTL_E_INVALIDDISPLAYOPTION }, // DISPLAY_ERROR_MSB + 0x23 Invalid distance to scroll
{DISPLAY_INVALIDORIENTATION ,WICTL_E_INVALIDDISPLAYOPTION }, // DISPLAY_ERROR_MSB + 0x24 Invalid orientation request
{DISPLAY_EOF ,0 }, // DISPLAY_ERROR_MSB + 0x25 End of file
{DISPLAY_INVALIDRECT ,WICTL_E_INVALIDRECT }, // DISPLAY_ERROR_MSB + 0x26 Invalid rectangle
// .{DISPLAY_INVALIDWIDTH , }, // DISPLAY_ERROR_MSB + 0x27 Image width is not a multiple of 8
// .{DISPLAY_EMM_SHARE_ERROR , }, // DISPLAY_ERROR_MSB + 0x30 NULL pointer to write buffer
// .{DISPLAY_EMM_ALLOCATE_ERROR , }, // DISPLAY_ERROR_MSB + 0x30 Unable to allocate memory or out of disk space
// .{DISPLAY_EMM_DEALLOCATE_ERROR , }, // DISPLAY_ERROR_MSB + 0x33 Unable to deallocate memory
// .{DISPLAY_EMM_MAPPING_ERROR , }, // DISPLAY_ERROR_MSB + 0x34 Unable to map memory page
{DISPLAY_NO_CLIPBOARD ,CTL_E_INVALIDCLIPBOARDFORMAT }, // DISPLAY_ERROR_MSB + 0x40 Clipboard does not contain bitmap data
{DISPLAY_INTERNALDATAERROR ,0 }, // DISPLAY_ERROR_MSB + 0x40 Internal data corrupted
{DISPLAY_IMAGETYPENOTSUPPORTED ,CTL_E_INVALIDFILEFORMAT }, // DISPLAY_ERROR_MSB + 0x42 Image type is not supported
{DISPLAY_NULLPOINTERINVALID ,WICTL_E_INVALIDDISPLAYOPTION }, // DISPLAY_ERROR_MSB + 0x44 NULL pointer is invalid
// .{DISPLAY_CREATEPALETTEFAILED , }, // DISPLAY_ERROR_MSB + 0x45 Create palette failure
{DISPLAY_SETBITMAPBITSFAILED ,CTL_E_OUTOFMEMORY }, // DISPLAY_ERROR_MSB + 0x46 SetBitmapBits failure
{DISPLAY_GETBITMAPBITSFAILED ,CTL_E_OUTOFMEMORY }, // DISPLAY_ERROR_MSB + 0x47 GetBitmapBits failure
{DISPLAY_CANTOPENCLIPBOARD ,CTL_E_OUTOFMEMORY }, // DISPLAY_ERROR_MSB + 0x48 OpenClipboard failure
{DISPLAY_INVALIDOPFORPALIMAGE ,WICTL_E_INVALIDDISPLAYOPTION }, // DISPLAY_ERROR_MSB + 0x49 Invalid operation for palettized image
{DISPLAY_INVALIDDISPLAYPALETTE ,WICTL_E_INVALIDDISPLAYOPTION }, // DISPLAY_ERROR_MSB + 0x4a Invalid display palette
{DISPLAY_INVALIDFILENAME ,CTL_E_BADFILENAME }, // DISPLAY_ERROR_MSB + 0x4b Invalid filename
// .{DISPLAY_CACHENORESPONSE , }, // DISPLAY_ERROR_MSB + 0x50 Backcap does not respond to DDE message; may not be loaded
// .{DISPLAY_CACHEFILEERROR , }, // DISPLAY_ERROR_MSB + 0x52 The file to be uncached is not in the cache"
{DISPLAY_CACHENOTFOUND ,0 }, // DISPLAY_ERROR_MSB + 0x53 The file is not in the cache
//X.{DISPLAY_CACHEFILESFULL , }, // DISPLAY_ERROR_MSB + 0x54 The maximum number of files have been cached, cannot add files to cache
{DISPLAY_CACHEWINDOWFULL ,CTL_E_OUTOFMEMORY }, // DISPLAY_ERROR_MSB + 0x55 The maximum number of files have been cached, cannot add files to cache
// .{DISPLAY_CACHEQUEUEFULL , }, // DISPLAY_ERROR_MSB + 0x56 The cache queue could not be expanded due to lack of memory
{DISPLAY_CACHEFILEINUSE ,WICTL_E_PAGEINUSE }, // DISPLAY_ERROR_MSB + 0x57 The file is in use
{DISPLAY_ALREADY_OPEN ,0 }, // DISPLAY_ERROR_MSB + 0x80 The image window is already opened
// .{DISPLAY_DATA_ACCESS , }, // DISPLAY_ERROR_MSB + 0x80 Unable to lock data segment
{DISPLAY_INVALID_OPTIONS ,WICTL_E_INVALIDDISPLAYOPTION }, // DISPLAY_ERROR_MSB + 0x82 Invalid option
{DISPLAY_NOPAGE ,WICTL_E_INVALIDPAGE }, // DISPLAY_ERROR_MSB + 0x83 File/Document has zero Pages
// .{DISPLAY_INVALIDIMGWIDTH , }, // DISPLAY_ERROR_MSB + 0x84 Invalid image width
// .{DISPLAY_CANTINVOKEDLGBOX , }, // DISPLAY_ERROR_MSB + 0x85 Cannot invoke dialog box
// .{DISPLAY_RECT_NOT_ACTIVE , }, // DISPLAY_ERROR_MSB + 0x86 There is no active rectangle
{DISPLAY_COMPRESS_NOT_SUPPORT ,WICTL_E_INVALIDCOMPRESSIONTYPE }, // DISPLAY_ERROR_MSB + 0x87 Compression type not supported
//X.{DISPLAY_WIZARD_NOT_LOADED , }, // DISPLAY_ERROR_MSB + 0x88 Wizard not found or loaded
// .{DISPLAY_INVALIDPAGE , }, // DISPLAY_ERROR_MSB + 0x89 Invalid page number
{DISPLAY_CANT_ASSOCIATE_WINDOW ,0 }, // DISPLAY_ERROR_MSB + 0x90 Cant associate the windows
// .{DISPLAY_WINDOW_ASSOCIATED , }, // DISPLAY_ERROR_MSB + 0x90 Window is Associated.
{DISPLAY_RESTRICTED_ACCESS ,CTL_E_PERMISSIONDENIED }, // DISPLAY_ERROR_MSB + 0x92 Can't modify protected layers.
// .{DISPLAY_RESTRICTED_FIELD , }, // DISPLAY_ERROR_MSB + 0x93 This field is protected.
{DISPLAY_BAD_ANO_DATA ,0 }, // DISPLAY_ERROR_MSB + 0x94 Bad annotation data.
// .{DISPLAY_LAYER_DOES_NOT_EXIST , }, // DISPLAY_ERROR_MSB + 0x95 The specified layer does not exist.
{DISPLAY_NOTHING_SELECTED ,WICTL_E_NOANNOSELECTED }, // DISPLAY_ERROR_MSB + 0x96 Nothing is currently selected.
// .{DISPLAY_NOTHING_MATCHED , }, // DISPLAY_ERROR_MSB + 0x97 Nothing matched the specified information.
{DISPLAY_OIANT_ERR_NOFONT ,CTL_E_OUTOFMEMORY }, // DISPLAY_ERROR_MSB + 0x98 couldn't create anno text font
{DISPLAY_OIANT_ERR_NONAMEDBLK ,CTL_E_OUTOFMEMORY }, // DISPLAY_ERROR_MSB + 0x99 couldn't find named block for anno text
// .{DISPLAY_OIAN_ERR_RENDER_NODIBMEM , }, // DISPLAY_ERROR_MSB + 0x9a couldn't alloc global mem for render dib
// .{DISPLAY_OIANT_ERR_CANT_ACTIVATE , }, // DISPLAY_ERROR_MSB + 0x9b cannot activate text when it's rotated
{DISPLAY_IMAGE_MARK_NAME ,CTL_E_FILENOTFOUND }, // DISPLAY_ERROR_MSB + 0x9c cannot find image by reference file
{DISPLAY_LOADEXEC_FAILED ,0 }, // DISPLAY_ERROR_MSB + 0x9d cannot load executable
{DISPLAY_COMPRESS_BAD_DATA ,0 }, // DISPLAY_ERROR_MSB + 0x9e Bad data found while decompressing the image
{DISPLAY_MUTEX_FAILURE ,0 }, // DISPLAY_ERROR_MSB + 0x9f Mutex failed to grant control - NEW
{IMGSE_MEMORY ,CTL_E_OUTOFMEMORY }, // IMGSE + 0x00 Unable to allocate required memory
{IMGSE_ALREADY_OPEN ,WICTL_E_ALREADY_OPEN }, // IMGSE + 0x02 Scanner is already open
{IMGSE_HANDLER ,WICTL_E_SCANNER_ERROR }, // IMGSE + 0x03 Scanner or Scanner handler error
{IMGSE_BAD_SIZE ,WICTL_E_BAD_SIZE }, // IMGSE + 0x04 Invalid image size to scan
{IMGSE_OPEN_DISPLAY ,WICTL_E_SCANNER_ERROR }, // IMGSE + 0x05 Unable to open the display
{IMGSE_OPEN_FOR_WRITE ,CTL_E_PATHFILEACCESSERROR }, // IMGSE + 0x06 Unable to open the file for writing
{IMGSE_START_SCAN ,WICTL_E_START_SCAN }, // IMGSE + 0x07 Start scanner operation failed
{IMGSE_SCAN_DATA ,WICTL_E_SCANNER_ERROR }, // IMGSE + 0x08 Scanner failed during scan operation
{IMGSE_TIMEOUT ,WICTL_E_TIME_OUT }, // IMGSE + 0x09 Scanner timed out
{IMGSE_WRITE_DISPLAY ,WICTL_E_SCANNER_ERROR }, // IMGSE + 0x0a Unable to write to the display
{IMGSE_WRITE_BLOCK ,CTL_E_PATHFILEACCESSERROR }, // IMGSE + 0x0b Unable to write to the open file
{IMGSE_CLOSE_FILE ,CTL_E_PATHFILEACCESSERROR }, // IMGSE + 0x0c Unable to close the open file
{IMGSE_EXEC ,WICTL_E_SCANNER_ERROR }, // IMGSE + 0x0d Unable to load the scanner handler
{IMGSE_INSTALL ,WICTL_E_INVALID_REG }, // IMGSE + 0x0e Unable to find scanner in win.ini file
{IMGSE_NOT_OPEN ,WICTL_E_NOT_OPEN }, // IMGSE + 0x0f Scanner is not open
{IMGSE_NOT_IMPLEMENTED ,WICTL_E_SCANNER_ERROR }, // IMGSE + 0x00 Unable to perform requested function
{IMGSE_CANCEL ,WICTL_E_CANCELPRESSED }, // IMGSE + 0x00 Cancel was pressed from dialog box
{IMGSE_DIALOG ,WICTL_E_SCANNER_ERROR }, // IMGSE + 0x02 Unable to free dialog proc. instance
{IMGSE_NULL_PTR ,CTL_E_INVALIDUSEOFNULL }, // IMGSE + 0x03 NULL pointer passed; not allowed
{IMGSE_PROPERTY ,CTL_E_OUTOFMEMORY }, // IMGSE + 0x04 can't update property list
{IMGSE_CLOSE ,WICTL_E_SCANNER_ERROR }, // IMGSE + 0x05 checking for close button
{IMGSE_EXIT ,WICTL_E_SCANNER_ERROR }, // IMGSE + 0x06 dialog box exitted
{IMGSE_NO_SCANNERS ,WICTL_E_INVALID_REG }, // IMGSE + 0x07 no scanners in win.ini
{IMGSE_NOT_INSTALLED ,WICTL_E_INVALID_REG }, // IMGSE + 0x08 can't update win.ini
{IMGSE_NO_FEEDER ,WICTL_E_NO_FEEDER }, // IMGSE + 0x09 No paper feeder
{IMGSE_NO_PAPER ,WICTL_E_NO_PAPER }, // IMGSE + 0x0a No paper in feeder
{IMGSE_BAD_FILENAME ,CTL_E_BADFILENAME }, // IMGSE + 0x0b can't create file name
{IMGSE_NO_SCANNER_SELECTED ,WICTL_E_INVALID_REG }, // IMGSE + 0x0c scanner not in win.ini
{IMGSE_FILE_LIMIT ,WICTL_E_FILE_LIMIT }, // IMGSE + 0x0d Unable to generate new file names
{IMGSE_BAD_PATH ,CTL_E_PATHNOTFOUND }, // IMGSE + 0x0e Invalid pathname
{IMGSE_BAD_WND ,WICTL_E_SCANNER_ERROR }, // IMGSE + 0x0f Invalid window handle
{IMGSE_NOT_AVAILABLE ,WICTL_E_SCANNER_ERROR }, // IMGSE + 0x20 Scanner is in use (and cannot be shared)
{IMGSE_BAD_STATE ,WICTL_E_SCANNER_ERROR }, // IMGSE + 0x20 unknown scanner state
{IMGSE_FILE_EXISTS ,CTL_E_FILEALREADYEXISTS }, // IMGSE + 0x22 File exists and cannot be overwritten
{IMGSE_HWNOTFOUND ,WICTL_E_SCANNER_ERROR }, // IMGSE + 0x23 Scanner hardware not found
{IMGSE_NO_POWER ,WICTL_E_NO_POWER }, // IMGSE + 0x24 Scanner powered off
{IMGSE_COVER_OPEN ,WICTL_E_COVER_OPEN }, // IMGSE + 0x25 Cover opened during feed/eject
{IMGSE_ABORT ,WICTL_E_ABORT }, // IMGSE + 0x26 User aborted scan while scanning
{IMGSE_JAM ,WICTL_E_SCANNER_JAMMED }, // IMGSE + 0x30 Scanner paper jam
{IMGSE_FEEDERJAM ,WICTL_E_SCANNER_JAMMED }, // IMGSE_JAM + 0x00 Scanner paper jam caused by feeder
{IMGSE_EJECTJAM ,WICTL_E_SCANNER_JAMMED }, // IMGSE_JAM + 0x02 Scanner paper jam caused by eject
{IMGSE_FEJAM ,WICTL_E_SCANNER_JAMMED }, // IMGSE_JAM + 0x03 Feeder and eject jam
{IMGSE_ENDORSERJAM ,WICTL_E_SCANNER_JAMMED }, // IMGSE_JAM + 0x04 caused by endorser
{IMGSE_EJENDOJAM ,WICTL_E_SCANNER_JAMMED }, // IMGSE_JAM + 0x06 eject & endorse jam
{IMGSE_SCANNERJAM ,WICTL_E_SCANNER_JAMMED }, // IMGSE_JAM + 0x08 Scanner jam
{IMGSE_INVALIDPARM ,CTL_E_ILLEGALFUNCTIONCALL }, // IMGSE + 0x40 Parameter not supported
{IMGSE_BADCMPRPARM ,WICTL_E_INVALIDCOMPRESSIONTYPE}, // IMGSE + 0x42 Invalid compress parameter
{IMGSE_BADVERSION ,WICTL_E_SCANNER_ERROR }, // IMGSE + 0x43 Handler version # not compatible
{IMGSE_BADUSAGE ,WICTL_E_SCANNER_ERROR }, // IMGSE + 0x44 Bad internal function usage
{IMGSE_BADFUNCTION ,CTL_E_ILLEGALFUNCTIONCALL }, // IMGSE + 0x45 func not supported by handler
{IMGSE_BUSY ,WICTL_E_BUSY }, // IMGSE + 0x46 scanner busy
{IMGSE_PATH_NOT_COMPATIBLE ,CTL_E_PATHFILEACCESSERROR }, // IMGSE + 0x47 Scan path is not on the server. To scan, path must be changed.
{IMGSE_ERROR_PARSING_FILESPEC ,CTL_E_PATHFILEACCESSERROR }, // IMGSE + 0x48 Error parsing file name.
{IMGSE_FTYPE_EXT_MISMATCH ,CTL_E_BADFILENAME }, // IMGSE + 0x49 File Type doesn't match Extension
{IMGSE_OUT_OF_DISK_SPACE ,CTL_E_DISKFULL }, // IMGSE + 0x4A Not enough disk space to full uncompressed scanned image
{OIPRT_OUTOFDISK ,CTL_E_DISKFULL }, // PRT_ERROR + 0x00* disk is full
{OIPRT_OUTOFMEMORY ,CTL_E_OUTOFMEMORY }, // PRT_ERROR + 0x02* no memory available
{OIPRT_USERABORT ,CTL_E_PRINTERERROR }, // PRT_ERROR + 0x03* user aborted job through abort dialog or print manager
{OIPRT_PAGEOUTOFRANGE ,CTL_E_PRINTERERROR }, // PRT_ERROR + 0x04* invalid page range specified
{OIPRT_RECTOUTOFRANGE ,CTL_E_PRINTERERROR }, // PRT_ERROR + 0x05* invalid rectangle specified
{OIPRT_BADOUTPUTFORMAT ,CTL_E_PRINTERERROR }, // PRT_ERROR + 0x06* invalid output format specified
{OIPRT_PRINTERNOTSUPPORTED ,CTL_E_PRINTERERROR }, // PRT_ERROR + 0x07* printer not supported
{OIPRT_BADPTRPARAM ,CTL_E_PRINTERERROR }, // PRT_ERROR + 0x08* process doesn't have access to range of memory specified by pointer param
{OIPRT_BADSTRUCTVERSION ,CTL_E_PRINTERERROR }, // PRT_ERROR + 0x09* invalid structure version specified
{OIPRT_NODEFAULTPRINTER ,CTL_E_DEVICEUNAVAILABLE }, // PRT_ERROR + 0x0A* no default printer
{OIPRT_BADPRINTER ,CTL_E_PRINTERERROR }, // PRT_ERROR + 0x0B* invalid dest printer param
{OIPRT_BADWINDOWHNDL ,CTL_E_PRINTERERROR }, // PRT_ERROR + 0x0C* invalid window handle param
{OIPRT_BADORIENTATION ,CTL_E_PRINTERERROR }, // PRT_ERROR + 0x0D* invalid orientation specified
{OIPRT_BADCAPABILITIES ,CTL_E_PRINTERERROR }, // PRT_ERROR + 0x0E* invalid printer capabilities specified
{OIPRT_PRTDRVRFAILURE ,CTL_E_PRINTERERROR }, // PRT_ERROR + 0x0F* print driver failure
{OIPRT_CANTGETNEXTBAND ,CTL_E_PRINTERERROR }, // PRT_ERROR + 0x00* driver failed to return next band
{OIPRT_CANTSETABORTPROC ,CTL_E_PRINTERERROR }, // PRT_ERROR + 0x00* can't set print abort procedure
{OIPRT_CANTINITIATEJOB ,CTL_E_PRINTERERROR }, // PRT_ERROR + 0x02* can't start job with StartDoc
{OIPRT_INTERNALERROR ,CTL_E_PRINTERERROR }, // PRT_ERROR + 0x03* internal error
{OIPRT_TLSFAILURE ,CTL_E_PRINTERERROR }, // PRT_ERROR + 0x04* thread local storage call failure
{OIPRT_CANTCREATEWNDW ,CTL_E_PRINTERERROR }, // PRT_ERROR + 0x05* can't create window
{OIPRT_CANTCREATEBITMAP ,CTL_E_PRINTERERROR }, // PRT_ERROR + 0x06* can't create bitmap
{OIPRT_CANTCREATEDC ,CTL_E_PRINTERERROR }, // PRT_ERROR + 0x07* can't create a device context
{OIPRT_FAILUREWRITINGTODC ,CTL_E_PRINTERERROR }, // PRT_ERROR + 0x08* can't write data to device context
{FIO_OPEN_READ_ERROR ,CTL_E_PATHFILEACCESSERROR }, // FIO_ERROR + 0x01 Cannot open file for read
{FIO_READ_ERROR ,CTL_E_PATHFILEACCESSERROR }, // FIO_ERROR + 0x02 Cannot read file
{FIO_OPEN_WRITE_ERROR ,CTL_E_PATHFILEACCESSERROR }, // FIO_ERROR + 0x03 Cannot open file for write
{FIO_WRITE_ERROR ,CTL_E_PATHFILEACCESSERROR }, // FIO_ERROR + 0x04 Cannot write file
{FIO_EOF ,CTL_E_INVALIDFILEFORMAT }, // FIO_ERROR + 0x05 End of file was reached
// .{FIO_LOCK_INPUT_FAILED , }, // FIO_ERROR + 0x06 Failed to lock input data
// .{FIO_LOCK_OUTPUT_FAILED , }, // FIO_ERROR + 0x07 Failed to lock output data
// .{FIO_NO_INPUT_HANDLER , }, // FIO_ERROR + 0x08 Failed to lock input data
// .{FIO_NO_OUTPUT_HANDLER , }, // FIO_ERROR + 0x09 Failed to lock output data
// .{FIO_REMOVE_HANDLERS_ERROR , }, // FIO_ERROR + 0x0a Failed to remove handlers
{FIO_GLOBAL_LOCK_FAILED ,CTL_E_OUTOFMEMORY }, // FIO_ERROR + 0x0b Global lock of data failed
{FIO_PROPERTY_LIST_ERROR ,CTL_E_OUTOFMEMORY }, // FIO_ERROR + 0x0c An error occurred while obtaining a property list
// .{FIO_LOCK_DATA_SEGMENT_ERROR , }, // FIO_ERROR + 0x0d Failed to lock the data segment
{FIO_NULL_POINTER ,CTL_E_INVALIDUSEOFNULL }, // FIO_ERROR + 0x0e A NULL pointer was received
{FIO_LOCK_HANDLE_FAILED ,CTL_E_OUTOFMEMORY }, // FIO_ERROR + 0x0f Failure to lock a handle
{FIO_INVALID_WINDOW_HANDLE ,0 }, // FIO_ERROR + 0x10 Invalid window handle
{FIO_UNKNOWN_FILE_TYPE ,CTL_E_INVALIDFILEFORMAT }, // FIO_ERROR + 0x11 Unknown data file format
{FIO_SPAWN_HANDLER_ERROR ,0 }, // FIO_ERROR + 0x12 Spawning of the file handler failed
// .{FIO_CHECK_FILE_ERROR , }, // FIO_ERROR + 0x13 Error in the data file
{FIO_INVALID_PAGE_NUMBER ,WICTL_E_INVALIDPAGE }, // FIO_ERROR + 0x14 Invalid page number for the image file.
// .{FIO_GET_COMPRESSION_TYPE_ERROR , }, // FIO_ERROR + 0x15
{FIO_COMPRESSION_CHANGE ,WICTL_E_INVALIDCOMPRESSIONTYPE},// FIO_ERROR + 0x16 Compression type was changed
{FIO_UNSUPPORTED_FILE_TYPE ,CTL_E_INVALIDFILEFORMAT }, // FIO_ERROR + 0x17 File type is not supported
{FIO_ILLEGAL_COMPRESSION_TYPE ,WICTL_E_INVALIDCOMPRESSIONTYPE},// FIO_ERROR + 0x18 Illegal compression type
{FIO_GLOBAL_ALLOC_FAILED ,CTL_E_OUTOFMEMORY }, // FIO_ERROR + 0x19 Global allocation of data failed
{FIO_CANNOT_CONVERT_IN_PLACE ,CTL_E_CANTSAVEFILETOTEMP }, // FIO_ERROR + 0x1a Cannot read and write the same file
{FIO_GET_HEADER_ERROR ,CTL_E_INVALIDFILEFORMAT }, // FIO_ERROR + 0x1b Error reading the image header
{FIO_NO_IMAGE_LENGTH ,CTL_E_PATHFILEACCESSERROR }, // FIO_ERROR + 0x1c The image length tag was zero
// .{FIO_OPEN_SHARE_ERROR , }, // FIO_ERROR + 0x1d File sharing conflict on open
{FIO_DOSCLOSE_ERROR ,CTL_E_PATHFILEACCESSERROR }, // FIO_ERROR + 0x1e _dos_close call returned an error
// .{FIO_INVALID_FILENAME , }, // FIO_ERROR + 0x1f Filename specified is invalid
{FIO_MKDIR_ERROR ,CTL_E_PATHFILEACCESSERROR }, // FIO_ERROR + 0x20 Create directory attempt failed
{FIO_RMDIR_ERROR ,CTL_E_PATHFILEACCESSERROR }, // FIO_ERROR + 0x21 Delete directory attempt failed
{FIO_DELFILE_ERROR ,WICTL_E_DELETEFILEERROR }, // FIO_ERROR + 0x22 Delete file attempt failed
{FIO_DIRLIST_FULLBUF ,CTL_E_OUTOFMEMORY }, // FIO_ERROR + 0x23 Directory listing buffer full
// .{FIO_VOL_OUTOFRANGE , }, // FIO_ERROR + 0x24 Volume number specified is out of range
//C.{FIO_INVALID_SVRNAME , }, // FIO_ERROR + 0x25 Server name specified is invalid
{FIO_SYNTAX_ERROR ,CTL_E_BADFILENAMEORNUMBER }, // FIO_ERROR + 0x26 Filename contains syntax error(s)
{FIO_RENFILE_ERROR ,CTL_E_PATHFILEACCESSERROR }, // FIO_ERROR + 0x27 Rename file attempt failed
{FIO_ACCESS_DENIED ,CTL_E_PERMISSIONDENIED }, // FIO_ERROR + 0x28 File access attempt failed
// .{FIO_IDSOPEN_ERROR , }, // FIO_ERROR + 0x29 IDS Open directory error returned
// .{FIO_IDSREAD_ERROR , }, // FIO_ERROR + 0x2a IDS Read directory error returned
// .{FIO_NONETWORK , }, // FIO_ERROR + 0x2b Network unavailable
// .{FIO_COPYFILE_ERROR , }, // FIO_ERROR + 0x2c Copy file attempt failed
// .{FIO_DIRLIST_ERROR , }, // FIO_ERROR + 0x2d Directory list error or no files found
// .{FIO_VOLLIST_FULLBUF , }, // FIO_ERROR + 0x2e Volume name list buffer full
{FIO_LOCAL_ALLOC_FAILED ,CTL_E_OUTOFMEMORY }, // FIO_ERROR + 0x2f Local allocation of data failed
{FIO_LOCAL_LOCK_FAILED ,CTL_E_OUTOFMEMORY }, // FIO_ERROR + 0x30 Local lock of data failed
// .{FIO_GET_VOLNAMES_ERROR , }, // FIO_ERROR + 0x30 Volume names list error occurred
// .{FIO_IDSCLOSE_ERROR , }, // FIO_ERROR + 0x32 IDS Close directory error returned
// .{FIO_RPC_ERROR , }, // FIO_ERROR + 0x33 RPC error occurred
{FIO_INVALIDFILESPEC ,CTL_E_BADFILENAME }, // FIO_ERROR + 0x34 Invalid file specification
{FIO_INVALIDPATH ,CTL_E_PATHFILEACCESSERROR }, // FIO_ERROR + 0x35 Invalid path
{FIO_EXPAND_COMPRESS_ERROR ,WICTL_E_INVALIDCOMPRESSIONINFO}, // FIO_ERROR + 0x36 Error occurred while expanding or compressing file
{FIO_JPEG_COMPRESSION_ERROR ,0 }, // FIO_ERROR + 0x37 JPEG Compression error or JPEG dll not found
{FIO_ILLEGAL_COMP_FILETYPE ,WICTL_E_INVALIDCOMPRESSIONTYPE}, // FIO_ERROR + 0x38 Specified file type does not support compression type
{FIO_ILLEGAL_COMP_OPTIONS ,WICTL_E_INVALIDCOMPRESSIONINFO}, // FIO_ERROR + 0x39 Specified compression type has illegal options
{FIO_ILLEGAL_IMAGE_FILETYPE ,WICTL_E_INVALIDPAGETYPE }, // FIO_ERROR + 0x40 Specified file type does not support image type
{FIO_ILLEGAL_COMP_IMAGETYPE ,WICTL_E_INVALIDPAGETYPE }, // FIO_ERROR + 0x40 Specified compression type does not support image type
{FIO_IMAGE_WIDTH_ERROR ,0 }, // FIO_ERROR + 0x42 Image width is too wide to be read.
// .{FIO_OLD_JPEG , }, // FIO_ERROR + 0x43 Obsolete JPEG version, image translation required.
// .{FIO_MAXBUFFER , }, // FIO_ERROR + 0x44 Exceed the maximum buffer size.
{FIO_FILE_PROP_FOUND ,0 }, // FIO_ERROR + 0x45 The file's data was found in list
{FIO_FILE_PROP_NOT_FOUND ,0 }, // FIO_ERROR + 0x46 The files'data was not found in list
{FIO_FILE_LIST_NOT_EXIST ,0 }, // FIO_ERROR + 0x47 The property list for file data does not exist
{FIO_CANT_GET_ANODATA ,0 }, // FIO_ERROR + 0x48 Can't get annotation info (old server)
{FIO_DIRECTORY_EXISTS ,CTL_E_FILEALREADYEXISTS }, // FIO_ERROR + 0x49 Specifed directory to create already exists
{FIO_FILE_EXISTS ,CTL_E_FILEALREADYEXISTS }, // FIO_ERROR + 0x4A Specifed file to create already exists
{FIO_ILLEGAL_ALIGN ,CTL_E_INVALIDFILEFORMAT }, // FIO_ERROR + 0x4B Invalid alignment value
{FIO_OBSOLETEAWD ,CTL_E_INVALIDFILEFORMAT }, // FIO_ERROR + 0x4C AWD file has invalid or obsolete format
{FIO_INVALID_DATA_TYPE ,CTL_E_INVALIDFILEFORMAT }, // FIO_ERROR + 0x4D Illegal/invalid data type specified
{FIO_INVALID_FILE_ID ,CTL_E_BADFILENAMEORNUMBER }, // FIO_ERROR + 0x4E Invalid File ID or File not open
{FIO_BAD_PARAM_COMBO ,WICTL_E_INTERNALERROR }, // FIO_ERROR + 0x4F Invalid parameter combination
{FIO_FILE_NOEXIST ,CTL_E_FILENOTFOUND }, // FIO_ERROR + 0x50 File she no exist
{IMG_CMBADHANDLE ,0 }, // IMG_ERROR + 0x00 Invalid window handle
{IMG_CMBADWRITE ,0 }, // IMG_ERROR + 0x02 Error writing to the registry
{IMG_CMBADPARAM ,CTL_E_ILLEGALFUNCTIONCALL }, // IMG_ERROR + 0x03 Invalid input parameter
{IMG_CMNOMEMORY ,CTL_E_OUTOFMEMORY }, // IMG_ERROR + 0x04 Memory allocation failed
{IMG_SSCANTSETPROP ,CTL_E_OUTOFMEMORY }, // IMG_ERROR + 0x05 Setting property list failed
{IMG_SSDUPLICATE ,0 }, // IMG_ERROR + 0x06 Cannot register duplicate window handle
{IMG_SSNOTREG ,0 }, // IMG_ERROR + 0x07 Window not registered
{IMG_SSNOHANDLES ,0 }, // IMG_ERROR + 0x08 No window handles registered
{IMG_CANTGLOBALLOCK ,CTL_E_OUTOFMEMORY }, // IMG_ERROR + 0x09 Cannot lock global memory
{IMG_CANTADDLIB ,0 }, // IMG_ERROR + 0x0a Can't add a library
{IMG_REG_WINDOWS_MAXED_OUT ,CTL_E_OUTOFMEMORY }, // IMG_ERROR + 0x0b Maximum number of image windows already registered
{IMG_BUFFER_TOO_SMALL ,CTL_E_OVERFLOW }, // IMG_ERROR + 0x0c Return Buffer too small
{IMG_CANTINIT ,0 }, // IMG_ERROR + 0x0d variables were not initialized in memory map file
{IMG_NOSETTINGINREG ,0 }, // IMG_ERROR + 0x0e Return Empty Buffer
{IMG_CANTFINDKEYNAME ,0 }, // IMG_ERROR + 0x0f Can't find Key name
{IMG_UNKNOWNKEYNAMEID ,0 }, // IMG_ERROR + 0x00 Unknown Key Name
{IMG_CANTDELETEKEY ,0 }, // IMG_ERROR + 0x00 Can't delete registry key
{IMG_CANTCREATEREGSECTION ,0 }, // IMG_ERROR + 0x02 Can't create registry section
{IMG_CANTCREATEREGENTRY ,0 }, // IMG_ERROR + 0x03 Can't create registry entry
{IMG_CANTOPENKEY ,0 }, // IMG_ERROR + 0x04 Can't open registry key
{IMG_CANTADDPROCESS ,0 }, // IMG_ERROR + 0x05 Can't add process to list
{IMG_CANTCREATEPROCENTRY ,0 }, // IMG_ERROR + 0x06 Can't create process list entry
{IMG_CANTFINDPROCESS ,0 }, // IMG_ERROR + 0x07 Can't find process in process list
{IMG_CANTFINDLIBRARY ,0 }, // IMG_ERROR + 0x08 Can't find library in Lib list
{IMG_CANTADDLIBRARY ,0 }, // IMG_ERROR + 0x09 Can't add library to lib list
{IMG_CANTTRAVERSEREG ,0 }, // IMG_ERROR + 0x0a Can't traverse registry to the WOI tree
{IMG_NOT_INTEGER ,0 }, // IMG_ERROR + 0x1b Value fetched from registry was not an integer
{IMG_BAD_CMPR_OPTION_CMBO ,WICTL_E_INVALIDCOMPRESSIONTYPE},// IMG_ERROR + 0x1c Bad combination of Compression type & option
{IMG_CANT_GET_VALUE ,0 }, // IMG_ERROR + 0x1d Cant get the value that was requested
{IMG_INVALID_HEX_STRING ,0 }, // IMG_ERROR + 0x1e Hex ASCII String being converted was invlaid
//F.{OIFAX_NO_OI_FAX_SW , }, // OIFAX_ERROR + 0x00 OPEN/image Fax for Windows has not been properly installed.
//F {OIFAX_ERR_FAXDRIVER , }, // OIFAX_ERROR + 0x02 Cannot load fax driver, possible network access error
//F.{OIFAX_NO_RECIPIENTS , }, // OIFAX_ERROR + 0x03 There are no recipients for this fax.
//F.{OIFAX_WKS_NOT_LOADED , }, // OIFAX_ERROR + 0x04 The fax client TSR is not loaded.
//F.{OIFAX_NO_FREE_CAS , }, // OIFAX_ERROR + 0x05 There are no CAS handles available for faxing.
//F.{OIFAX_OLD_WKS , }, // OIFAX_ERROR + 0x06 An old version of the fax client TSR is loaded.
//F.{OIFAX_NOT_CONNECTED , }, // OIFAX_ERROR + 0x07 The fax client is not connected to a fax server.
//F.{OIFAX_SUBMIT_BUSY , }, // OIFAX_ERROR + 0x08 The fax client submit process is busy.
//F.{OIFAX_GENERAL_ERROR , }, // OIFAX_ERROR + 0x09 A fax error has occurred.
//O.{OIOCR_DATANOTFOUND , }, // OIOCR_ERROR + 0x00 The requested zone output was not generated.
//O.{OIOCR_BUFTOOSMALL , }, // OIOCR_ERROR + 0x02 The memory buffer allocated is too small.
//O.{OIOCR_INVALKEYWORD , }, // OIOCR_ERROR + 0x03 The input key word does not exist.
//O.{OIOCR_ATTRIBOUTOFRANGE , }, // OIOCR_ERROR + 0x04 The attribute number is out of range on the attribute list.
//O.{OIOCR_VALUEOUTOFRANGE , }, // OIOCR_ERROR + 0x05 The value number is out of range on the value list.
//O.{OIOCR_ZONETOOLARGE , }, // OIOCR_ERROR + 0x06 The requested zone contains more than 32000 characters.
//O.{OIOCR_HINSTNOTREG , }, // OIOCR_ERROR + 0x07 The instance handle is not registered.
//O.{OIOCR_HWNDNOTINIT , }, // OIOCR_ERROR + 0x08 The window handle is not initialized. Call IMGOCRInit.
//O.{OIOCR_INVALFORMAT , }, // OIOCR_ERROR + 0x09 This error is returned if the initialization file format is not valid.
//O.{OIOCR_NOVALSFORATT , }, // OIOCR_ERROR + 0x0a The attribute for which a value number is requested has no values.
//O.{OIOCR_ATTRIBNOTFOUND , }, // OIOCR_ERROR + 0x0b The requested attribute does not exist.
//O.{OIOCR_NOVALUESELECTED , }, // OIOCR_ERROR + 0x0c No value selected.
//O.{OIOCR_OUTOFMEMORY , }, // OIOCR_ERROR + 0x0d Out of memory, try closing an application.
//O.{OIOCR_CANTLOCKHANDLE , }, // OIOCR_ERROR + 0x0e Can't lock a handle.
//O.{OIOCR_OPENFILEFAILED , }, // OIOCR_ERROR + 0x0f Can't open a file.
//O.{OIOCR_OUTPUTFILEEXISTS , }, // OIOCR_ERROR + 0x00 The output file already exists.
//O.{OIOCR_NOATTSFORHWND , }, // OIOCR_ERROR + 0x00 No attributes exist for the registered window.
//O.{OIOCR_CANTLOCKDATA , }, // OIOCR_ERROR + 0x02 Can't lock data.
//O.{OIOCR_WRITEFAILED , }, // OIOCR_ERROR + 0x03 Can't write to file.
//O.{OIOCR_READFAILED , }, // OIOCR_ERROR + 0x04 Can't read from file.
//O.{OIOCR_FILEBUFTOOSMALL , }, // OIOCR_ERROR + 0x05 The memory buffer allocated for file name is too small.
//O.{OIOCR_GENERATEDOUTFILE , }, // OIOCR_ERROR + 0x06 Output file generated due to FILEBUFTOOSMALL error.
//O.{OIOCR_VALUENOTFOUND , }, // OIOCR_ERROR + 0x07 The requested value does not exist.
//O.{OIOCR_INVALIDHWND , }, // OIOCR_ERROR + 0x08 Invalid window handle.
//O.{OIOCR_INVALIDMODULE , }, // OIOCR_ERROR + 0x09 API error. DLL module not available.
//O.{OIOCR_NOFILESTOOCR , }, // OIOCR_ERROR + 0x0a Create work file was called without a list of files.
//O.{OIOCR_OUTPUTFILENA , }, // OIOCR_ERROR + 0x0b The output file can not be opened. Most likely the file has yet to be created.
//O.{OIOCR_ZONEDATANA , }, // OIOCR_ERROR + 0x0c The requested zone is currently not available.
//O.{OIOCR_CANTDELETEFILE , }, // OIOCR_ERROR + 0x0d The specified file can not be deleted as it is currently open.
//O.{OIOCR_ZONEHASNODATA , }, // OIOCR_ERROR + 0x0e The zone was output as a NULL zone by the OCR engine.
//O.{OIOCR_INVALIDZONE , }, // OIOCR_ERROR + 0x0f The requested zone number is less than or equal to zero.
//O.{OIOCR_FILENAMENOTSPEC , }, // OIOCR_ERROR + 0x20 The file name was not specified.
//O.{OIOCR_READ_ERR , }, // OIOCR_ERROR + 0x20 Read error.
//O.{OIOCR_CANTOPENFILE , }, // OIOCR_ERROR + 0x22 Can't open file.
//O.{OIOCR_ZDFFILENAMEERROR , }, // OIOCR_ERROR + 0x23 The zone definition file name specified is not a valid ZDF file name.
//O.{OIOCR_INVALIDRCTCOORDS , }, // OIOCR_ERROR + 0x24 The specified rectangle coordinates do not make a legal rectangle.
//O.{OIOCR_SETCWDFAILED , }, // OIOCR_ERROR + 0x25 Set current working directory failed.
//O.{OIOCR_NULLPTR , }, // OIOCR_ERROR + 0x26 NULL pointer specified for an output value.
//O.{OIOCR_INVALIDUSERNAME , }, // OIOCR_ERROR + 0x27 The user name must be <= eight chars.
//O.{OIOCR_INVALIDCAPFILE , }, // OIOCR_ERROR + 0x28 The capability file OIOCR.INI in the windows directory can not be opened.
//O.{OIOCR_GETCLNTDIRFAILED , }, // OIOCR_ERROR + 0x29 The client's work directory can not be read.
//O.{OIOCR_GETWORKDIRFAILED , }, // OIOCR_ERROR + 0x2a The OCR engine work directory can not be read.
//O.{OIOCR_OUTFILENAMEERROR , }, // OIOCR_ERROR + 0x2b Invalid output file name specified.
//O.{OIOCR_IMAGEFILECOPYERR , }, // OIOCR_ERROR + 0x2c Image file could not be copied to a temporary file.
//O.{OIOCR_ZDFFILECOPYERR , }, // OIOCR_ERROR + 0x2d ZDF file could not be copied to a temporary file.
//O.{OIOCR_INVALIDINIFILE , }, // OIOCR_ERROR + 0x2e Invalid contents in the configuration file
//O.{OIOCR_REINITERROR , }, // OIOCR_ERROR + 0x2f IMGOCRDeInit must be called before reinitializing.
//O.{OIOCR_NOZDFFILE , }, // OIOCR_ERROR + 0x30 No ZDF file was specified.
//O.{OIOCR_INVALIDZDFFILE , }, // OIOCR_ERROR + 0x30 Specified ZDF file was not found.
//O.{OIOCR_SECTIONMISMATCH , }, // OIOCR_ERROR + 0x32 Section requested to be initialized does not match the current options initialized.
//O.{OIOCR_APIINUSE , }, // OIOCR_ERROR + 0x33 The API is already in use.
//O.{OIOCR_BUFSIZENOTSPEC , }, // OIOCR_ERROR + 0x34 The size of the results buffer was not specified.
//O.{OIOCR_MAXTITLEEXCEEDED , }, // OIOCR_ERROR + 0x35 Title string specified is longer than the maximum allowed.
//X.{OIG_NOMEMORY , }, // OIG_ERROR + 0x00 Can't allocate memory
//X.{OIG_CANTGLOBALLOCK , }, // OIG_ERROR + 0x02 Can't lock memory
//X.{OIG_MEMORYSTILLLOCKED , }, // OIG_ERROR + 0x03 Memory is locked
//X.{OIG_CANTFREEMEMORY , }, // OIG_ERROR + 0x04 Can't free memory
//X.{OIG_PAGEOUTOFRANGE , }, // OIG_ERROR + 0x05 Invalid page number
//X.{OIG_FUNCTIONPTRNULL , }, // OIG_ERROR + 0x06 Doc display function is NULL
//X.{OIG_LISTOVERFLOW , }, // OIG_ERROR + 0x07 List bigger than string length
//X.{OIG_BADCOPYOPTION , }, // OIG_ERROR + 0x08 Invalid doc copy option specified
//X.{OIG_BADWINDOWHANDLE , }, // OIG_ERROR + 0x09 Invalid window handle was passed
//C {NET_NULL_POINTER , }, // OIN_ERROR + 0x01 (NET_NETWORK_NOT_INSTALLED ,(OIN_ERROR + 0x02) /* Network not installed
//C.{NET_NETWORK_NOT_INSTALLED , }, // OIN_ERROR + 0x02 Network not installed
//C.{NET_NO_OBJECTS_FOUND , }, // OIN_ERROR + 0x03 No objects found
//C {NET_NO_SERVER_NAME , }, // OIN_ERROR + 0x04 No server name
//C.{NET_GLOBAL_ALLOC_FAILED , }, // OIN_ERROR + 0x05 GlobalAlloc failed
{OICOMEXCANTALLOC ,CTL_E_OUTOFMEMORY }, // OICOMEX_ERROR + 0x00 Compression error, can not allocate memory
{OICOMEXCANTLOCK ,CTL_E_OUTOFMEMORY }, // OICOMEX_ERROR + 0x02 Compression error, can not lock memory
{OICOMEXIMAGETYPEERROR ,WICTL_E_INVALIDCOMPRESSIONTYPE}, // OICOMEX_ERROR + 0x03 Compression error, invalid or unsupported image type
{OICOMEXSTRIPOUTOFBOUNDS ,WICTL_E_INVALIDCOMPRESSIONINFO}, // OICOMEX_ERROR + 0x04 Compression error, strip out of bounds
{OICOMEXUNSUPPORTED ,WICTL_E_INVALIDCOMPRESSIONTYPE}, // OICOMEX_ERROR + 0x05 Compression error, compression type not supported
{OICOMEXSTRIPTOOBIG ,WICTL_E_INVALIDCOMPRESSIONINFO}, // OICOMEX_ERROR + 0x06 Compression error, strip > 32k
{OICOMEXCANTLOADDLL ,CTL_E_OUTOFMEMORY }, // OICOMEX_ERROR + 0x07 Compression error, can not load dll
{OICOMEXINVALIMAGEFORJPEG ,WICTL_E_INVALIDCOMPRESSIONTYPE}, // OICOMEX_ERROR + 0x08 Compression error, invalid image type for jpeg
// .{OICOMEXJPEGLOWLEVELERR , }, // OICOMEX_ERROR + 0x50 Compression error, low level JPEG error
// .{OICOMEXJPEGLOWLEVELERR1 , }, // OICOMEX_ERROR + 0x51 Compression error, low level JPEG error
// .{OICOMEXJPEGLOWLEVELERR2 , }, // OICOMEX_ERROR + 0x52 Compression error, low level JPEG error
// .{OICOMEXJPEGLOWLEVELERR3 , }, // OICOMEX_ERROR + 0x53 Compression error, low level JPEG error
// .{OICOMEXJPEGLOWLEVELERR4 , }, // OICOMEX_ERROR + 0x54 Compression error, low level JPEG error
// .{OICOMEXJPEGLOWLEVELERR5 , }, // OICOMEX_ERROR + 0x55 Compression error, low level JPEG error
// .{OICOMEXJPEGLOWLEVELERR6 , }, // OICOMEX_ERROR + 0x56 Compression error, low level JPEG error
// .{OICOMEXJPEGLOWLEVELERR7 , }, // OICOMEX_ERROR + 0x57 Compression error, low level JPEG error
// .{OICOMEXJPEGLOWLEVELERR8 , }, // OICOMEX_ERROR + 0x58 Compression error, low level JPEG error
// .{OICOMEXJPEGLOWLEVELERR9 , }, // OICOMEX_ERROR + 0x59 Compression error, low level JPEG error
// .{OIANNOINVALPASSWORD , }, // OIANNO_ERROR + 0x00 The specified password is incorrect
// .{OIANNOINVALCONFIRMATION , }, // OIANNO_ERROR + 0x02 Confirmation of new passwrod failed
// .{OIANNOINVALFILEFORMAT , }, // OIANNO_ERROR + 0x03 Invalid the output file format for save annotation data
// .{OIANNOLAYERNAMEEXIST , }, // OIANNO_ERROR + 0x04 Annotation layer name already exist
// .{OIANNOLAYERNAMENOTEXIST , }, // OIANNO_ERROR + 0x05 Annotation layer name not exist
{OIANNOSTAMPNAMEINVALID ,CTL_E_BADFILENAMEORNUMBER }, // OIANNO_ERROR + 0x06 Annotation stamp name invalid
// .{OIANNOSTAMPTEXTINVALID , }, // OIANNO_ERROR + 0x07 Annotation stamp text invalid
{OIANNOSTAMPNAMEEXIST ,CTL_E_FILEALREADYEXISTS }, // OIANNO_ERROR + 0x08 Annotation already exists
// .{OIANNONOSTAMPSELECTED , }, // OIANNO_ERROR + 0x09 No stamp selected into stamp tool
// .{OIANNOFILETYPENOTSUP , }, // OIANNO_ERROR + 0x10 File type is not supported
{OIANNOIMAGENAMEINVALID ,CTL_E_FILENOTFOUND }, // OIANNO_ERROR + 0x11 Annotation image name invalid
{ 0,0 } // End-of-Table signified by all-zero entry!
};
// PUBLIC STATIC routine to map errors...
_declspec (dllexport) SCODE ErrMap::Xlate(long ErrIn, CString& HelpStr, UINT& HelpID, LPSTR FileName, long LineNumber)
{
// Assume that we have an unknown internal error, hopefully
// we will find an appropriate error...
SCODE RetErr = 0;
UINT RetHelpID = 0;
UINT RetHelpStrID = 0;
// Handle success...
if ( ErrIn == 0 )
return 0;
// Check for OLE/SCODE errors
// (If it is NOT an error SCODE we will assume that it is an O/i error)
if ( IS_ERROR(ErrIn) )
{
// Find the StringID and HelpID associated with this SCODE...
if ( SCodeToStrAndHelpIDs(ErrIn, RetHelpStrID, RetHelpID) )
RetErr = ErrIn; // Found!!
// DEBUG ONLY!!
//
// If we have encountered an UNHANDLED SCODE error
// display a message box indicating the error, etc.
//
// By doing this we can catch errors that are NOT in the table
#ifdef _DEBUG
if ( RetErr == 0 )
{
// Build the messagebox string, and display it...
char szMsg[256];
char szFmt[] = "Unhandled SCode error (%lu) in %s, line# %lu. \n\nPlease edit t:\\temp\\acm\\norerr.txt with this information.\n\n (Where t: is light\\shared1)";
_stprintf(szMsg, szFmt, ErrIn, FileName, LineNumber);
::MessageBox(NULL, szMsg, "DEBUG - Unhandled SCode error", MB_OK);
}
#endif
}
else
{
// Look up the SCODE associated with this incoming O/i error
RetErr = OiToSCode(ErrIn);
// If we found an associated SCODE, get its String and Help IDs...
if ( RetErr != 0 )
SCodeToStrAndHelpIDs(RetErr, RetHelpStrID, RetHelpID);
else
SCodeToStrAndHelpIDs(WICTL_E_INTERNALERROR, RetHelpStrID, RetHelpID);
// DEBUG ONLY!!
//
// If we have encountered an UNHANDLED Open/image error
// display a message box indicating the error, etc.
//
// By doing this we can catch O/i errors that are NOT in the table
// (including those that are either not there at all, commented out,
// or whose entries are not yet complete!
#ifdef _DEBUG
if ( RetErr == 0 )
{
// Build the messagebox string, and display it...
char szMsg[256];
char szFmt[] = "Unhandled Open/image error (0x%x) in %s, line# %u. \n\nPlease edit t:\\temp\\acm\\norerr.txt with this information.\n\n (Where t: is light\\shared1)";
_stprintf(szMsg, szFmt, ErrIn, FileName, LineNumber);
::MessageBox(NULL, szMsg, "DEBUG - Unhandled Open/image error", MB_OK);
}
#endif
}
// Map unfound errors to generic internal error...
if ( RetErr == 0 )
RetErr = WICTL_E_INTERNALERROR;
// If we found a help string from one of the above tables...
if ( RetHelpStrID != 0 )
{
// Force the local instance
HINSTANCE hSaveInst = AfxGetResourceHandle();
AfxSetResourceHandle(hPageInst);
// Load the string from the ID we found in the table
if ( HelpStr.IsEmpty() )
HelpStr.LoadString(RetHelpStrID);
else
{
// Prefix general error to passed in string...
CString szGeneralError;
szGeneralError.LoadString(RetHelpStrID);
CString szConcat;
szConcat.LoadString(IDS_CONCATSTRING);
HelpStr = szGeneralError + szConcat + HelpStr;
}
// Restore the saved instance
AfxSetResourceHandle(hSaveInst);
}
// If we were NOT passed a helpID return the one we found (if any)...
if ( HelpID == 0 )
HelpID = RetHelpID;
return RetErr;
}
// PRIVATE STATIC routine to assist in error map process...
SCODE ErrMap::OiToSCode(long OiErr)
{
// Assume NOT found!
SCODE RetSCODE = 0;
//Scan the O/i table looking for the incoming error...
LPOiErrMap lpOIErr = &OI_Map[0];
while ( lpOIErr->OiErrIn != 0 )
{
if ( lpOIErr->OiErrIn == OiErr )
{
// Get the SCODE associated with the incoming error
// (This may still be 0 to indicate that a mapping
// has not yet been established!)
RetSCODE = lpOIErr->SCodeOut;
break;
}
// Increment to the next error...
lpOIErr++;
}
return (RetSCODE);
}
// PRIVATE STATIC routine to assist in error map process...
BOOL ErrMap::SCodeToStrAndHelpIDs(SCODE ErrIn, UINT& StringID, UINT& HelpID)
{
// Assume NOT found!
BOOL Found = FALSE;
//Scan the OLE SCode table looking for the incoming error...
LPOLEErrMap lpOLEErr = &OLE_SCode_Map[0];
while ( lpOLEErr->SCodeIn != 0 )
{
if ( lpOLEErr->SCodeIn == ErrIn )
{
Found = TRUE;
StringID = lpOLEErr->HelpStrID;
HelpID = lpOLEErr->HelpContextID;
break;
}
// Increment to the next error...
lpOLEErr++;
}
return (Found);
}