378 lines
16 KiB
C
378 lines
16 KiB
C
/*****************************************************************************
|
|
* *
|
|
* VIEWER.H *
|
|
* *
|
|
* Copyright (C) Microsoft Corporation 1990-1992. *
|
|
* All Rights reserved. *
|
|
* *
|
|
******************************************************************************
|
|
* *
|
|
* Module Intent *
|
|
* *
|
|
* Allows access to Viewer DLL handling information and the public APIs *
|
|
* in MTITLE2.DLL and MVAPI2.DLL. *
|
|
* *
|
|
*****************************************************************************/
|
|
|
|
#if defined(__VIEWER_H__)
|
|
#error VIEWER.H included more than once.
|
|
#else
|
|
|
|
#if defined(__cplusplus)
|
|
extern "C" {
|
|
#endif
|
|
|
|
VOID FAR PASCAL InitDLL (VOID);
|
|
VOID FAR PASCAL FinalizeDLL (VOID);
|
|
VOID FAR PASCAL InformDLLs (WORD, DWORD, DWORD);
|
|
HANDLE FAR PASCAL HFindDLL (LPSTR, LPWORD);
|
|
FARPROC FAR PASCAL FarprocDLLGetEntry (LPSTR, LPSTR, PWORD);
|
|
|
|
/*****************************************************************************
|
|
* Use the following with the 'qError' internal variable. For more details *
|
|
* see the appendix example on DLLDEMO in the Viewer documentation. *
|
|
*****************************************************************************/
|
|
|
|
#define wMACRO_ERROR 128 // Maximum length of an error
|
|
|
|
// Use the ME (i.e., Macro Error) structure to return error information
|
|
// from a macro. Via the rgchError field of this structure, macros can
|
|
// return not only pre-defined errors, but also custom error strings.
|
|
|
|
typedef struct
|
|
{
|
|
WORD fwFlags; // Flag indicating action Viewer attempts upon dismissal
|
|
// of error message box. Initially set to fwMERR_ABORT.
|
|
|
|
WORD wError; // Error number if one occurs -- initially set to wMERR_NONE.
|
|
|
|
char rgchError[wMACRO_ERROR]; // If wError == wMERR_MESSAGE, this array
|
|
// contains error message to be displayed.
|
|
} ME, NEAR * PME, FAR * QME;
|
|
|
|
// Flags set in fwFlags field of the ME structure indicating the
|
|
// action Viewer attempts upon dismissal of the error message box.
|
|
|
|
#define fwMERR_ABORT 0x0001 // Attempts to abort on dismissal.
|
|
#define fwMERR_CONTINUE 0x0002 // Attempts to continue on dimissal.
|
|
#define fwMERR_RETRY 0x0004 // Attempts to retry on dismissal.
|
|
|
|
// Error numbers set in the ME structure's wError field indicating the error.
|
|
|
|
#define wMERR_NONE 0 // No error
|
|
#define wMERR_MEMORY 1 // Out of memory (local)
|
|
#define wMERR_PARAM 2 // Invalid parameter passed
|
|
#define wMERR_FILE 3 // Invalid file parameter
|
|
#define wMERR_ERROR 4 // General macro error
|
|
#define wMERR_MESSAGE 5 // Macro error with message
|
|
|
|
|
|
/*****************************************************************************
|
|
* End of section regarding the 'qError' internal variable. *
|
|
*****************************************************************************/
|
|
|
|
|
|
/*****************************************************************************
|
|
* Use the following with the LDLLHandler() routine found in DLLs for Viewer. *
|
|
*****************************************************************************/
|
|
|
|
// Use bitwise OR to combine one or more of the following as a response
|
|
// to the DW_WHATMSG message sent by Viewer to the LDLLHandler() routine
|
|
// upon initialization of the DLL. Each flag added to the response will
|
|
// turn on the corresponding class of messages to be subsequentally sent
|
|
// to that DLL's LDLLHandler() routine.
|
|
|
|
#define DC_NOMSG 0x00000000
|
|
#define DC_MINMAX 0x00000001
|
|
#define DC_INITTERM 0x00000002
|
|
#define DC_JUMP 0x00000004
|
|
#define DC_ACTIVATE 0x00000008
|
|
#define DC_SCROLL 0x00000020
|
|
#define DC_CONFIG 0x00000040
|
|
|
|
// Messages sent to the LDLLHandler() routine in DLLs loaded by
|
|
// Viewer and requested via response to the DW_WHATMSG message.
|
|
|
|
#define DW_NOTUSED 0
|
|
#define DW_WHATMSG 1
|
|
#define DW_MINMAX 2
|
|
#define DW_SIZE 3
|
|
#define DW_INIT 4
|
|
#define DW_TERM 5
|
|
#define DW_STARTJUMP 6
|
|
#define DW_ENDJUMP 7
|
|
#define DW_CHGFILE 8
|
|
#define DW_ACTIVATE 9
|
|
#define DW_ACTIVATEWIN 11
|
|
#define DW_SCROLL 12
|
|
#define DW_STARTCONFIG 13
|
|
#define DW_ENDCONFIG 14
|
|
|
|
/*****************************************************************************
|
|
* End of section regarding LDLLHandler() routine found in DLLs for Viewer. *
|
|
*****************************************************************************/
|
|
|
|
|
|
/*****************************************************************************
|
|
* Use the following in window functions supporting embedded windows. *
|
|
*****************************************************************************/
|
|
|
|
#define EWM_RENDER 0x706A
|
|
#define EWM_QUERYSIZE 0x706B
|
|
#define EWM_ASKPALETTE 0x706C
|
|
#define EWM_FINDNEWPALETTE 0x706D
|
|
#define EWM_PRINT 0x706F
|
|
#define EWM_COPY 0x7070
|
|
|
|
// Structure pointed to by the parameter, lParam, passed to the
|
|
// window procedure controlling the embedded window upon receiving
|
|
// the EWM_RENDER, EWM_PRINT, or EWM_COPY messages.
|
|
|
|
typedef struct tagRenderInfo {
|
|
RECT rc;
|
|
HDC hds;
|
|
} RENDERINFO, FAR * QRI, FAR *LPRENDERINFO;
|
|
|
|
// Structure passed to the window proceedure controlling the embedded
|
|
// window upon its creation. This structure is pointed to by the
|
|
// lpCreateParams field of the structure, CREATESTRUCT, pointed to
|
|
// by the parameter, lParam, passed to the WM_CREATE message of the
|
|
// window proceedure controlling the embedded window.
|
|
|
|
typedef struct tagCreateInfo {
|
|
short idMajVersion; // For Viewer 2.0, this field is set to 0.
|
|
short idMinVersion; // For Viewer 2.0, this field is set to 1.
|
|
LPSTR szFileName; // Current Viewer file
|
|
LPSTR szAuthorData; // Text passed by the author
|
|
HANDLE hfs; // Handle to the current file system
|
|
DWORD coFore; // Foreground color for this topic
|
|
DWORD coBack; // Background color for this topic
|
|
DWORD dwFlags; // Information flags (see below)
|
|
} EWDATA, FAR *QEWDATA, FAR *LPEWDATA;
|
|
|
|
// Values set in the EWDATA structure's dwFlags field giving
|
|
// information about the embedded window being created.
|
|
|
|
#define EWF_PRINT 0x00000001 // Embedded window is for printing
|
|
#define EWF_COPY 0x00000002 // Embedded window is for copying
|
|
|
|
/*****************************************************************************
|
|
* End of section regarding window functions supporting embedded windows. *
|
|
*****************************************************************************/
|
|
|
|
|
|
/*****************************************************************************
|
|
* Use the following to access the Title API provided by the MVTITLE2.DLL. *
|
|
*****************************************************************************/
|
|
|
|
typedef HANDLE HTITLE; // Handle to a Title
|
|
typedef HANDLE HTLIST; // handle to a Topic List
|
|
|
|
// External declarations for title access routines in MVTITLE2.DLL
|
|
|
|
extern BOOL FAR PASCAL TitleValid(HTITLE);
|
|
extern HTITLE FAR PASCAL TitleOpen(LPSTR);
|
|
extern void FAR PASCAL TitleClose(HTITLE);
|
|
extern long FAR PASCAL TitleGetInfo(HTITLE, int, long, long);
|
|
|
|
// TitleGetInfo() returns information corresponding to the following
|
|
// indexes. Pass them into TitleGetInfo() through the second parameter.
|
|
|
|
#define TTLINF_TITLE 1
|
|
#define TTLINF_COPYRIGHT 2
|
|
#define TTLINF_NUMTOPICS 11
|
|
#define TTLINF_HASINDEX 100
|
|
#define TTLINF_TOPICADDR 101
|
|
#define TTLINF_TOPICTITLE 102
|
|
#define TTLINF_FILENAME 106
|
|
#define TTLINF_CUSTOMINFO 256
|
|
|
|
// Use the following for access to topic lists.
|
|
|
|
typedef struct {
|
|
int iError;
|
|
int iStart;
|
|
int iLength;
|
|
} QUERYERR, FAR * LPQUERYERR;
|
|
|
|
extern HTLIST FAR PASCAL TopicListLoad(HTITLE, LPSTR);
|
|
extern HTLIST FAR PASCAL TopicListFromQuery(HTITLE, WORD, LPSTR, HTLIST, WORD,
|
|
FARPROC, LPHANDLE, LPQUERYERR);
|
|
|
|
#define IMPLICIT_AND 0
|
|
#define IMPLICIT_OR 1
|
|
#define IMPLICIT_NOT 2
|
|
#define IMPLICIT_PHRASE 3
|
|
#define IMPLICIT_NEAR 4
|
|
|
|
extern HTLIST FAR PASCAL TopicListFromTopicNo(HTITLE, long);
|
|
extern void FAR PASCAL TopicListDestroy(HTLIST);
|
|
|
|
extern long FAR PASCAL TopicListLength(HTLIST);
|
|
extern long FAR PASCAL TopicListLookup(HTLIST, long);
|
|
|
|
extern HTLIST FAR PASCAL TopicListCombine(int,HTLIST,HTLIST,BOOL);
|
|
|
|
#define TL_AND 0
|
|
#define TL_OR 1
|
|
#define TL_NOT 2
|
|
|
|
#define TL_QKEY 0x8000 /* Flag to denote QuickKeys query */
|
|
|
|
// Use the following for access to the Highlight API.
|
|
|
|
long FAR PASCAL HighlightMatchFind(HANDLE, long, DWORD, DWORD FAR *,
|
|
DWORD FAR *);
|
|
int FAR PASCAL HighlightMatchGet(HANDLE, long, long, DWORD FAR *,
|
|
DWORD FAR *);
|
|
long FAR PASCAL HighlightMatchCount(HANDLE, long);
|
|
void FAR PASCAL HighlightDestroy(HLOCAL);
|
|
|
|
// Use the following for access to the Word Wheel API.
|
|
|
|
typedef HANDLE HWHEEL;
|
|
|
|
extern HWHEEL FAR PASCAL WordWheelOpen(LPSTR, LPSTR);
|
|
extern void FAR PASCAL WordWheelClose(HWHEEL);
|
|
extern long FAR PASCAL WordWheelLength(HWHEEL);
|
|
extern long FAR PASCAL WordWheelPrefix(HWHEEL,LPSTR);
|
|
extern BOOL FAR PASCAL WordWheelLookup(HWHEEL,long,LPBYTE,int);
|
|
|
|
// Get the resource string corresponding to an error number
|
|
// returned from TopicListFromQuery()
|
|
|
|
extern int FAR PASCAL QueryGetErrorMessage(UINT, LPSTR, int);
|
|
|
|
/*****************************************************************************
|
|
* End of section regarding the Title API provided by the MVTITLE2.DLL. *
|
|
*****************************************************************************/
|
|
|
|
|
|
/*****************************************************************************
|
|
* The following are Viewer Error Codes for public APIs. *
|
|
*****************************************************************************/
|
|
|
|
// Error ranges
|
|
|
|
#define ERR_INTERNAL_BASE 0
|
|
#define ERR_INTERNAL_MAX (ERR_INTERNAL_BASE + 32)
|
|
|
|
#define ERR_GRAMMAR_BASE 1900
|
|
#define ERR_GRAMMAR_MAX (ERR_INTERNAL_BASE + 50)
|
|
|
|
#define ERR_LOADLIBRARY_BASE 1950
|
|
#define ERR_LOADLIBRARY_MAX (ERR_LOADLIBRARY_BASE + 32)
|
|
|
|
#define ERR_DOS_BASE 2000
|
|
#define ERR_DOS_MAX (ERR_DOS_BASE + 256)
|
|
|
|
|
|
// Error codes
|
|
|
|
#define ERR_SUCCESS (ERR_INTERNAL_BASE + 0)
|
|
#define ERR_FAILED (ERR_INTERNAL_BASE + 1)
|
|
#define ERR_IDXINTERRUPT (ERR_INTERNAL_BASE + 2)
|
|
#define ERR_NEARMEMORY (ERR_INTERNAL_BASE + 3)
|
|
#define ERR_MEMORY (ERR_INTERNAL_BASE + 4)
|
|
#define ERR_DISKFULL (ERR_INTERNAL_BASE + 5)
|
|
#define ERR_WORDTOOLONG (ERR_INTERNAL_BASE + 6)
|
|
#define ERR_BADVERSION (ERR_INTERNAL_BASE + 7)
|
|
#define ERR_TOOMANYDOCS (ERR_INTERNAL_BASE + 8)
|
|
#define ERR_TOOMANYSTOPS (ERR_INTERNAL_BASE + 9)
|
|
#define ERR_TOOLONGSTOPS (ERR_INTERNAL_BASE + 10)
|
|
#define ERR_STEMTOOLONG (ERR_INTERNAL_BASE + 11)
|
|
#define ERR_TREETOOBIG (ERR_INTERNAL_BASE + 12)
|
|
#define ERR_CANTREAD (ERR_INTERNAL_BASE + 13)
|
|
#define ERR_IDXSEGOVERFLOW (ERR_INTERNAL_BASE + 14)
|
|
#define ERR_BADARG (ERR_INTERNAL_BASE + 15)
|
|
#define ERR_VOCABTOOLARGE (ERR_INTERNAL_BASE + 16)
|
|
#define ERR_GROUPIDTOOBIG (ERR_INTERNAL_BASE + 17)
|
|
#define ERR_BADOPERATOR (ERR_INTERNAL_BASE + 18)
|
|
#define ERR_TERMTOOCOMPLEX (ERR_INTERNAL_BASE + 19)
|
|
#define ERR_SEARCHTOOCOMPLEX (ERR_INTERNAL_BASE + 20)
|
|
#define ERR_BADSYSCONFIG (ERR_INTERNAL_BASE + 21)
|
|
#define ERR_ASSERT (ERR_INTERNAL_BASE + 22)
|
|
#define ERR_FILE_NOT_EXIST (ERR_INTERNAL_BASE + 23)
|
|
#define ERR_INVALID_FS_FILE (ERR_INTERNAL_BASE + 24)
|
|
#define ERR_OUT_OF_RANGE (ERR_INTERNAL_BASE + 25)
|
|
#define ERR_SEEK_FAILED (ERR_INTERNAL_BASE + 26)
|
|
#define ERR_FILECREAT_FAILED (ERR_INTERNAL_BASE + 27)
|
|
#define ERR_CANTWRITE (ERR_INTERNAL_BASE + 28)
|
|
#define ERR_NOHANDLE (ERR_INTERNAL_BASE + 29)
|
|
#define ERR_EXIST (ERR_INTERNAL_BASE + 30)
|
|
#define ERR_INVALID_HANDLE (ERR_INTERNAL_BASE + 31)
|
|
#define ERR_BADFILEFORMAT (ERR_INTERNAL_BASE + 32)
|
|
|
|
|
|
#define ERR_NULLQUERY (ERR_GRAMMAR_BASE + 0)
|
|
#define ERR_EXPECTEDTERM (ERR_GRAMMAR_BASE + 1)
|
|
#define ERR_EXTRACHARS (ERR_GRAMMAR_BASE + 2)
|
|
#define ERR_MISSQUOTE (ERR_GRAMMAR_BASE + 3)
|
|
#define ERR_MISSLPAREN (ERR_GRAMMAR_BASE + 4)
|
|
#define ERR_MISSRPAREN (ERR_GRAMMAR_BASE + 5)
|
|
#define ERR_TOODEEP (ERR_GRAMMAR_BASE + 6)
|
|
#define ERR_TOOMANYTOKENS (ERR_GRAMMAR_BASE + 7)
|
|
#define ERR_BADFORMAT (ERR_GRAMMAR_BASE + 8)
|
|
#define ERR_BADVALUE (ERR_GRAMMAR_BASE + 9)
|
|
#define ERR_UNMATCHEDTYPE (ERR_GRAMMAR_BASE + 10)
|
|
#define ERR_BADBREAKER (ERR_GRAMMAR_BASE + 11)
|
|
#define ERR_BADRANGEOP (ERR_GRAMMAR_BASE + 12)
|
|
#define ERR_ALL_WILD (ERR_GRAMMAR_BASE + 13)
|
|
#define ERR_NON_LAST_WILD (ERR_GRAMMAR_BASE + 14)
|
|
#define ERR_WILD_IN_DTYPE (ERR_GRAMMAR_BASE + 15)
|
|
|
|
/*****************************************************************************
|
|
* End of section defining Viewer Error Codes for public APIs. *
|
|
*****************************************************************************/
|
|
|
|
|
|
/*****************************************************************************
|
|
* Use the following to access APIs provided by MVAPI2.DLL. *
|
|
*****************************************************************************/
|
|
|
|
#define cmdoptNONE 0
|
|
#define cmdoptHIDE 1
|
|
|
|
typedef WORD CMDOPT;
|
|
|
|
typedef unsigned short int VWR;
|
|
|
|
// Constants used by VwrGetInfo().
|
|
#define GI_MAINHWND 2 // main window handle
|
|
#define GI_CURRHWND 3 // current window handle
|
|
#define GI_FGCOLOR 5 // foreground color
|
|
#define GI_BKCOLOR 6 // background color
|
|
#define GI_TOPICNO 7 // number of topic currently displayed
|
|
#define GI_HPATH 8 // path handle
|
|
#define GI_HWNDSRMAIN 11 // handle to main scrolling region
|
|
#define GI_HWNDNSRMAIN 13 // handle to main nonscrolling region
|
|
#define GI_TOPADDR 16 // for top address of a region
|
|
#define GI_BOTADDR 17 // for bottom address of a region
|
|
|
|
// External declarations for APIs in MVAPI2.DLL.
|
|
|
|
extern GLOBALHANDLE FAR PASCAL HFill( LPSTR lpszHelp,
|
|
WORD usCommand,
|
|
DWORD ulData );
|
|
|
|
extern VWR FAR PASCAL VwrFromMVB( LPSTR lpstrMvb );
|
|
extern VWR FAR PASCAL VwrCommand( VWR Vwr,
|
|
LPSTR lpstrMvb,
|
|
LPSTR lpstrMacro,
|
|
CMDOPT cmdoptFlags );
|
|
extern BOOL FAR PASCAL VwrQuit( VWR vwr );
|
|
extern HWND FAR PASCAL HwndFromVwr( VWR vwr );
|
|
extern VWR FAR PASCAL VwrFromHwnd( HWND hwnd );
|
|
extern VWR FAR PASCAL VwrFromHinst( HANDLE hInst );
|
|
extern long FAR PASCAL VwrGetInfo(VWR, int, long, long);
|
|
|
|
/*****************************************************************************
|
|
* End of section regarding APIs provided by MVAPI.DLL. *
|
|
*****************************************************************************/
|
|
|
|
#if defined(__cplusplus)
|
|
}
|
|
#endif
|
|
|
|
#endif /* !defined(__VIEWER_H__) */
|