|
|
/************************************************************/ /* Windows Write, Copyright 1985-1992 Microsoft Corporation */ /************************************************************/
/* WRITE Globals */
#define NOGDICAPMASKS
#define NOVIRTUALKEYCODES
#define NOWINMESSAGES
#define NOWINSTYLES
#define NOSYSMETRICS
#define NOICON
#define NOKEYSTATE
#define NOSYSCOMMANDS
#define NOSHOWWINDOW
#define NOATOM
#define NOCLIPBOARD
#define NOCOLOR
#define NOCREATESTRUCT
#define NOCTLMGR
#define NODRAWTEXT
#define NOMB
#define NOMEMMGR
#define NOMETAFILE
#define NOMINMAX
#define NOOPENFILE
#define NOPEN
#define NOREGION
#define NOSCROLL
#define NOSOUND
#define NOWH
#define NOWINOFFSETS
#define NOWNDCLASS
#define NOCOMM
#include <windows.h>
#include "mw.h"
#define NOUAC
#include "cmddefs.h"
#include "dispdefs.h"
#include "docdefs.h"
#include "filedefs.h"
#include "fmtdefs.h" /* formatdefs.h */
#include "propdefs.h"
#include "fkpdefs.h"
#include "printdef.h" /* printdefs.h */
#include "wwdefs.h"
#include "prmdefs.h"
#include "rulerdef.h"
#include "editdefs.h"
#define NOSTRERRORS
#include "str.h"
#include "fontdefs.h"
#include "globdefs.h" /* text for static strings */
VAL rgval [ivalMax]; /* General purpose parm-passing array */ #ifdef ENABLE
VAL rgvalAgain[ivalMax]; #endif
CHAR vchDecimal = '?'; /* "decimal point" character
real value set in initwin.c */
int vzaTabDflt = vzaTabDfltDef; /* width of default tab in twips */
/* pen windows */ VOID (FAR PASCAL *lpfnRegisterPenApp)(WORD, BOOL) = NULL;
/* page buffers stuff */ CHAR *rgibpHash; int iibpHashMax; struct BPS *mpibpbps; int ibpMax; int ibpMaxFloat = 128; typeTS tsMruBps; CHAR (*rgbp)[cbSector]; struct ERFN dnrfn[rfnMax]; int rfnMac; typeTS tsMruRfn; int vfBuffersDirty = FALSE;
/* doc stuff */ struct DOD (**hpdocdod)[]; int docCur; /* current doc */ int docMac; int docScrap; #ifdef CASHMERE /* No docBuffer in WRITE */
int docBuffer; #endif
int docUndo;
#if defined(JAPAN) & defined(DBCS_IME) /* Doc for Insert IR_STRING from IME [yutakan]*/
int docIRString; #endif
int docRulerSprm; int docMode = docNil; /* doc with "Page nnn" message */ int vpgn; /* current page number of document */ typeCP cpMinCur; typeCP cpMacCur;
/* file stuff */ struct FCB (**hpfnfcb)[]; int fnMac; int ferror; int errIO; /* i/o error code */ int versFile = 0; int vrefFile = 0; int vrefSystem = 0;
#ifdef DBCS_VERT
CHAR szAtSystem [] = szAtSystemDef; // for vertical-sysfont
#endif
WORD vwDosVersion; /* Current DOS version, maj in lo 8, minor in hi */ int vfInitializing = TRUE; /* TRUE during inz, FALSE thereafter */ int vfDiskFull = FALSE; /* Disk full error, fn != fnScratch */ int vfSysFull = FALSE; /* Disk holding fnScratch is full */ int vfDiskError = FALSE; /* Serious Disk Error has occurred */ int vfLargeSys = FALSE; int vfMemMsgReported = FALSE; int vfCloseFilesInDialog = FALSE; /* Set inside OPEN, SAVE dialog */ int vfSizeMode; int vfPictSel; int vfPMS = FALSE; /* Currently doing picture move/size */ int vfnWriting = fnNil; /* fn that gets written to disk */ int vfnSaving = fnNil; /* Like above, but longer lifetime */ int vibpWriting; CHAR (**vhrgbSave)[]; /* emergency space for save events */ struct FPRM fprmCache; /* scratch file property modifiers */
/* global boolean flags */ int vfTextOnlySave = FALSE; /* reset by each new/open, use by save as */ int vfBackupSave; /* use by save as box */
#if defined(JAPAN) || defined(KOREA)
int vfWordWrap; /*t-Yoshio WordWrap flag*/ #elif defined(TAIWAN) || defined(PRC) //Daniel/MSTC, 1993/02/25
int vfWordWrap= 1; // always set it on
#endif
#if defined(JAPAN) & defined(IME_HIDDEN) //IME3.1J
int vfImeHidden; /*T-HIROYN ImeHidden Mode flag*/ #endif
int vfOutOfMemory = FALSE; int vfOvertype = FALSE; /* still using this ? */ int vfPrintMode = FALSE; /* TRUE if format to printer mode on screen */ int vfDraftMode = FALSE; /* TRUE if the user choose the draft mode option */ int vfRepageConfirm = FALSE; /* repaginate confirm page break option */ int vfVisiMode = FALSE; /* TRUE if visible char mode on */ int vfModeIsFootnote; /* TRUE when szMode contains string "Footnote" */ int vfNoIdle = FALSE; int vfDeactByOtherApp = FALSE; /* TRUE if we are deactivated by another app */ int vfDownClick = FALSE; /* TRUE when we received a down click in our window */ int vfCursorVisible = FALSE; /* TRUE if want to show the cursor in a mouseless
system */ int vfMouseExist = FALSE; /* TRUE if mouse hardware is installed */ int vfInLongOperation = FALSE; /* TRUE if we are still in a long operation
so that the cursor should stay hourglass */ int vfScrapIsPic = FALSE; /* Whether docScrap contains picture */ BOOL fDestroyOK;
int fGrayChar; /* TRUE if selection consists of mixed char properties */ int fGrayPara; /* TRUE if selection consists of mixed para properties */
int vfPrPages = FALSE; /* TRUE if print page range */ int vpgnBegin; /* starting page number to print */ int vpgnEnd; /* ending page number to print */ int vcCopies = 1; /* nubmer of copies to print */ BOOL vfPrErr = FALSE; /* TRUE iff a printing error occurred */ BOOL vfPrDefault = TRUE; /* TRUE iff Write chose printer */ BOOL vfWarnMargins = FALSE; /* TRUE if we should warn user about bad margins */
/* Show that Print, Help, and Glossary processing is uninitialized */ int vfPrintIsInit = FALSE; int vfHelpIsInit = FALSE; int vfGlyIsInit = FALSE;
int vfInsEnd = false; /* Is insert point at end-of-line? */ int vfInsertOn; int vfMakeInsEnd; int vfSelAtPara; int vfSeeSel = FALSE; int vfLastCursor; /* TRUE iff the last selection was made
by an Up/Down cursor key */ int vfGotoKeyMode = FALSE; /* Apply GOTO meta mode to next cursor
key */ #ifdef SAND
int vftcDaisyPS = -1; int vftcDaisyNoPS = -1; int vfDaisyWheel = FALSE; int vifntApplication; int vifntMac; #endif /* SAND */
#ifdef UNUSED
int vfCanPrint; #endif
int vchInch; int vfMouse; typeCP vcpSelect;
#ifdef DEBUG
int fIbpCheck = TRUE; int fPctbCheck = TRUE; #ifdef CKSM
unsigned (**hpibpcksm) []; /* Checksums for buffer page contents */ unsigned ibpCksmMax; /* Alloc limit for cksm array */ #endif
#endif /* DEBUG */
int vWordFmtMode = FALSE; /* used during saves. If false, no conversion is
done. True is convert to Word format,CVTFROMWORD is translate chars from Word character set at save */
/* **************************************************************** */ /* strings, predefined file names - definitions stored in globdefs.h */ /* */ /* NOTE NOTE NOTE Win 3.0 */ /* */ /* Some of these strings have now been moved from globdefs.h */ /* to write.rc. This was done to easy localization. */ /* */ /* **************************************************************** */
CHAR (**hszTemp)[]; CHAR (**hszGlosFile)[]; CHAR (**hszXfOptions)[]; CHAR szMode[30]; /* buffer for "Page nnn" message */
CHAR szEmpty[] = ""; CHAR szExtDoc[] = szExtDocDef; CHAR szExtWordDoc[] = szExtWordDocDef; CHAR szExtGls[] = szExtGlsDef; CHAR szExtDrv[] = szExtDrvDef; /* for Intl added szExtWordDoc entry */ CHAR *mpdtyszExt [] = { szExtDoc, szExtGls, szEmpty, szEmpty, szEmpty, szEmpty, szExtWordDoc }; CHAR szExtBackup[] = szExtBackupDef; CHAR szExtWordBak[] = szExtWordBakDef; /* WIN.INI: our app entry */ CHAR szWriteProduct[] = szWriteProductDef; CHAR szFontEntry[] = szFontEntryDef; /* WIN.INI: our font list */ CHAR szWriteDocPrompt[25]; /* OpenFile prompts */ CHAR szScratchFilePrompt[25]; CHAR szSaveFilePrompt[25]; #if defined(KOREA) // jinwoo : 10/16/92
CHAR szAppName[13]; /* For message box headings */ #else
CHAR szAppName[10]; /* For message box headings */ #endif
CHAR szUntitled[20]; /* Unnamed doc */ CHAR szSepName[] = szSepNameDef; /* separator between product
name and file name in header */
#ifdef STYLES
CHAR szSshtEmpty[] = szSshtEmptyDef; #endif /* STYLES */
/* Strings for parsing the user profile. */ CHAR szWindows[] = szWindowsDef; CHAR szDevice[] = szDeviceDef; CHAR szDevices[] = szDevicesDef; CHAR szBackup[] = szBackupDef;
#if defined(JAPAN) || defined(KOREA) //Win3.1J
CHAR szWordWrap[] = szWordWrapDef; #endif
#if defined(JAPAN) & defined(IME_HIDDEN) //IME3.1J
CHAR szImeHidden[] = szImeHiddenDef; #endif
/* Strings for our window classes (MUST BE < 39 CHARS) */
CHAR szParentClass[] = szParentClassDef; CHAR szDocClass[] = szDocClassDef; CHAR szRulerClass[] = szRulerClassDef; CHAR szPageInfoClass[] = szPageInfoClassDef; #ifdef ONLINEHELP
CHAR szHelpDocClass[] = szHelpDocClassDef; #endif
CHAR szWRITEText[30]; CHAR szFree[15]; CHAR szMWTemp [] = szMWTempDef; CHAR szSystem [] = szSystemDef;
CHAR szMw_acctb[] = szMw_acctbDef; CHAR szNullPort[] = szNullPortDef; CHAR szNone[15]; CHAR szMwlores[] = szMwloresDef; CHAR szMwhires[] = szMwhiresDef; CHAR szMw_icon[] = szMw_iconDef; CHAR szMw_menu[] = szMw_menuDef; CHAR szScrollBar[] = szScrollBarDef; CHAR szAltBS[20]; CHAR szPmsCur[] = szPmsCurDef; CHAR szHeader[15]; CHAR szFooter[15];
CHAR szModern[] = szModernDef; CHAR szRoman[] = szRomanDef; CHAR szSwiss[] = szSwissDef; CHAR szScript[] = szScriptDef; CHAR szDecorative[] = szDecorativeDef;
CHAR szExtSearch[] = szExtSearchDef; /* store default search spec */ CHAR szLoadFile[25]; CHAR szCvtLoadFile[45];
CHAR szIntl[] = szIntlDef; CHAR szsDecimal[] = szsDecimalDef; CHAR szsDecimalDefault[] = szsDecimalDefaultDef; CHAR sziCountry[] = sziCountryDef; CHAR sziCountryDefault[5];
/* table of unit names from util2.c - Must agree with cmddefs.h */ CHAR *mputsz[utMax] = { " ", " ", " ", " ", " ", " ", };
/* For convenience, we reserves Mac's st concept, the difference is that
cch stored in the first byte of the array includes the '\0' so that we can use it as a sz by chopping the 1st byte */ CHAR stBuf[256];
CHAR szCaptionSave[cchMaxFile]; /* save the caption text */ /* insert stuff */ CHAR rgchInsert[cchInsBlock]; /* temporary insert buffer */ typeCP cpInsert; /* beginning cp of insert block */ int ichInsert; /* number of chars used in rgchInsert */ typeFC fcMacPapIns = fc0; typeFC fcMacChpIns = fc0; struct FKPD vfkpdCharIns; struct FKPD vfkpdParaIns; int vdlIns; /* Display line for current insert */ int vcchBlted=0; /* # of chars blted onto vdlIns */ int vidxpInsertCache=-1; /* Current position in vfli.rgdxp
during fast insert */ int vfInsFontTooTall; /* Ins chr will be too tall for line */ struct EDL *vpedlAdjustCp; int vfSuperIns; /* whether in super-fast insert mode */ typeCP cpInsLastInval; int vdypCursLineIns; int vdypBase; int vdypAfter; int vxpIns; int vxpMacIns; int vypBaseIns; int vfTextBltValid; typeCP cpWall = cp0; int vfInsLast;
/* Keyboard shift/lock flags */ int vfShiftKey = FALSE; /* whether Shift is down */ int vfCommandKey = FALSE; /* whether Ctrl key is down */ int vfOptionKey = FALSE; /* whether Alt key is down */
/* cache stuff */ CHAR *vpchFetch; CHAR (**hgchExpand)[]; int vichFetch; int vdocFetch; int vccpFetch; int vcchFetch; int visedCache; int vdocExpFetch; int vdocParaCache = docNil; int vdocPageCache; int vdocSectCache; typeCP vcpFetch; typeCP vcpFirstParaCache; typeCP vcpLimParaCache; typeCP vcpMinPageCache; typeCP vcpMacPageCache; typeCP vcpLimSectCache; typeCP vcpFirstSectCache;
/* cache stuff for display purpose */ int ctrCache = 0; int itrFirstCache = 0; int itrLimCache = itrMaxCache; int dcpCache = 0; typeCP cpCacheHint = cp0;
/* The picture bitmap cache */
int vdocBitmapCache = docNil; typeCP vcpBitmapCache; HBITMAP vhbmBitmapCache = NULL; BOOL vfBMBitmapCache;
/* style property stuff */ int ichpMacFormat; struct CHP vchpNormal; struct CHP vchpAbs; struct CHP vchpInsert; struct CHP vchpFetch; struct CHP vchpSel; /* Holds the props when the selection is
an insert point */ struct CHP *pchpDefault; struct CHP (**vhgchpFormat)[]; struct PAP vpapPrevIns; struct PAP vpapAbs; struct PAP *vppapNormal; struct SEP vsepNormal; struct SEP vsepAbs; struct SEP vsepStd; struct SEP vsepPage;
#define ESPRM(cch, sgc, spr, fSame, fClobber) \
(cch + (ESPRM_sgcMult * sgc) + (ESPRM_spr * spr) + \ (ESPRM_fSame * fSame) + (ESPRM_fClobber * fClobber))
/* ESPRM fields are:
cch 2 bits of length, 0 means determined by procedure sgc 2 bits of group: char, para, or running head spr 1 bit priority, fClobber sprms clobber sprms in same group with priority less than or equal fSame means overrides previous instance of same sprm fClobber see spr */
#define ESPRMChar ESPRM(2,0,0,1,0)
#define ESPRMPara ESPRM(2,1,1,1,0)
#define ESPRMParaLong ESPRM(3,1,1,1,0)
/* This table corresponds to sprm's in prmdefs.h */ CHAR dnsprm[sprmMax] = { /* 0 */ 0, /* */ ESPRMParaLong, /* PLMarg */ /* 2 */ ESPRMParaLong, /* PRMarg */ ESPRMParaLong, /* PFIndent */ /* 4 */ ESPRMPara, /* PJc */ ESPRM(1,1,1,1,0), /* Ruler */ /* 6 */ ESPRM(0,1,1,1,0), /* Ruler1 */ ESPRMPara, /* PKeep */ /* 8 */ ESPRM(2,1,1,1,1), /* PNormal (formerly Pstyle) */ ESPRM(2,2,0,1,0), /* PRhc running head code */ /* 10 */ ESPRM(0,1,0,1,1), /* PSame, clobbers all tabs but related ones */ ESPRMParaLong, /* PDyaLine */ /* 12 */ ESPRMParaLong, /* PDyaBefore */ ESPRMParaLong, /* PDyaAfter */ /* 14 */ ESPRM(1,1,1,0,0), /* PNest */ ESPRM(1,1,1,0,0), /* PUnNest */ /* 16 */ ESPRM(1,1,1,0,0), /* PHang - hanging indent */ ESPRM(0,1,1,1,0), /* PRgtbd */ /* 18 */ ESPRMPara, /* PKeepFollow */ ESPRM(1,1,0,1,1), /* PCAll - NUSED */ /* 20 */ ESPRMChar, /* CBold */ ESPRMChar, /* CItalic */ /* 22 */ ESPRMChar, /* CUline */ ESPRMChar, /* CPos */ /* 24 */ ESPRMChar, /* CFtc */ ESPRMChar, /* CHps */ /* 26 */ ESPRM(0,0,0,1,1), /* CSame */ ESPRMChar, /* CChgFtc */ /* 28 */ ESPRMChar, /* CChgHps */ ESPRM(2,0,0,1,0), /* CPlain */ /* 30 */ ESPRMChar, /* CShadow */ ESPRMChar, /* COutline */ /* 32 */ ESPRMChar, /* CCsm - case modification. */
/* The following sprms are unused as of 10/10/84: */ ESPRMChar, /* CStrike */ /* 34 */ ESPRMChar, /* DLine - ? */ ESPRMChar, /* CPitch - obs. */ /* 36 */ ESPRMPara, /* COverset */ ESPRM(2,0,0,1,1), /* CStc Style */ /* The preceding sprms are unused as of 10/10/84: */
/* 38 */ ESPRM(0,0,0,0,0), /* CMapFtc */ ESPRM(0,0,0,0,0), /* COldFtc */ /* 40 */ ESPRM(0,1,1,1,0) /* PRhcNorm -- cch is 4 */ };
/* ruler stuff */ int mprmkdxa[rmkMARGMAX]; /* stores dxa of indents on ruler */ int rgxaRulerSprm[3];
/* This is a global parameter to AdjustCp; if FALSE, no invalidation will
take place. */ BOOL vfInvalid = TRUE; /* if FALSE, no invalidation will take place
in AdjustCp */
int viDigits = 2; BOOL vbLZero = FALSE; int utCur = utDefault; /* may be inch or cm depending on value
in globdefs.h */
short itxbMac; struct TXB (**hgtxb)[]; struct UAB vuab;
/* search stuff */ CHAR (**hszFlatSearch)[]; #if defined(JAPAN) || defined(KOREA)
CHAR (**hszDistFlatSearch)[]; #endif
CHAR (**hszSearch)[]; CHAR (**hszReplace)[]; CHAR (**hszRealReplace)[]; /* used for building replacement text */ CHAR (**hszCaseReplace)[]; /* used for building replacement text with
appropriate capitalization. */ CHAR *szSearch; BOOL fReplConfirm = TRUE; BOOL fSearchCase = FALSE; #if defined(JAPAN) || defined(KOREA)
BOOL fSearchDist = TRUE; #endif
BOOL fSearchWord = FALSE; BOOL fSpecialMatch; BOOL fMatchedWhite = FALSE; BOOL fParaReplace = FALSE; /*BOOL fSearchForward = TRUE;*/ typeCP cpMatchLim; int vfDidSearch = FALSE;
/* Strings for printer selection */ CHAR (**hszPrinter)[]; /* name of the current printer */ CHAR (**hszPrDriver)[]; /* name of the current printer driver */ CHAR (**hszPrPort)[]; /* name of the current printer port */ CHAR szNul[cchMaxIDSTR]; /* name of the null device */ BOOL vfPrinterValid = TRUE; /* FALSE iff the above strings do not
describe the printer DC */
/* global dxa/dya stuff */ int vdxaPaper; int vdyaPaper; int vdxaTextRuler; /* from section props used to calculate right margin */
int dxpLogInch; int dypLogInch; int dxpLogCm; int dypLogCm; int dxaPrPage; int dyaPrPage; int dxpPrPage; int dypPrPage; int ypSubSuperPr;
#ifdef KINTL
int dxaAdjustPerCm; /* The amount of kick-back to be added to xa per cm in
XaQuantize() to offset a round-off error. */ #endif /* ifdef KINTL */
/* actual position of the cursor line */ int vxpCursLine; int vypCursLine; int vdypCursLine; int vfScrollInval; /* means scroll did not take and UpdateWw must be repeated */
/* selection stuff */ int vfSelHidden = FALSE; struct SEL selCur; /* current selection (i.e. sel in current ww) */
/* window stuff */ struct WWD rgwwd[wwMax]; int wwMac = 0; int wwCur = wwNil; #ifdef ONLINEHELP
int wwHelp=wwNil; /* Help Window */ #endif
int wwClipboard=wwNil; /* Clipboard Display Window */ struct WWD *pwwdCur = &rgwwd[0]; /* current window descriptor */ int vipgd = -1; /* page number displayed in lower corner */ int xpAlpha; int ypAlpha; RECT rectParent; struct FLI vfli = { cp0, 0, cp0, 0, 0, 0, FALSE, 0, 0, 0, 0, 0, 0, 0, FALSE, FALSE, 0, 0, 0, 0, 0, FALSE, 0, 0, /* rgdxp */ 0x0000, 0xFFFE, 0xffff, 0xffff, 0xe0ff, 0xff3f, 0x00ff, 0xff07, 0x00fe, 0xff03, 0x00f8, 0xff00, 0x0ff0, 0x7f80, 0x3fe0, 0x3fe0, 0x7fc0, 0x1ff0, 0xffc0, 0x1ff8, 0xff81, 0x0ffc, 0xff83, 0x0ffe, 0xff87, 0x0fff, 0x8f07, 0x071f, 0x060f, 0x870f, 0x060f, 0x870f, 0x8f0f, 0x871f, 0xff0f, 0x87ff, 0xff0f, 0x87ff, 0xff0f, 0x87ff, 0x1f0f, 0x878f, 0x0f0f, 0x870f, 0x0007, 0x070f, 0x8087, 0x0f1f, 0xe083, 0x0f7e, 0xff81, 0x0ffc, 0xffc0, 0x1ff8, 0x7fc0, 0x1ff0, 0x1fe0, 0x3fc0, 0x00f0, 0x7f00, 0x00fc, 0xff01, 0x00fe, 0xff03, 0xe0ff, 0xff3f, 0x8BEC, 0xFC46, 0xF8D1, 0x4689, 0x2BEA, 0x8BFF, 0xEBF7, 0xFF55, 0x0A76, 0x468B, 0x2BEC, 0x50C6, 0x8B57, 0x085E, 0x5FFF, 0xFF08, 0x0A76, 0x8B56, 0xEA46, 0xC703, 0x8B50, 0x085E, 0x5FFF, 0xFF0C, 0x0A76, 0x468B, 0x03EC, 0x50C6, 0x8B57, 0x085E, 0x5FFF, 0xFF08, 0x0A76, 0x468B, 0x2BFA, 0x50C6, 0x468B, 0x03EA, 0x50C7, 0x5E8B, 0xFF08, 0x0C5F, 0x468B, 0xB1FA, 0xD306, 0x03F8, 0x8BF0, 0xFC46, 0xF8D3, 0xF803, 0x7639, 0x7DEC, 0x5EA6, 0x835F, 0x02ED, 0xE58B, 0x5D1F, 0xCA4D, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* rgch */ 0x11, 0x30, 0x5c, 0x71, 0x84, 0x75, 0x83, 0x84, 0x30, 0x72, 0x89, 0x30, 0x60, 0x71, 0x85, 0x7c, 0x64, 0x30, 0x7A, 0x7D, 0x77, 0x7C, 0x64, 0x60, 0x33, 0x44, 0x61, 0x7A, 0x67, 0x76, 0x33, 0x7B, 0x72, 0x60, 0x33, 0x71, 0x76, 0x76, 0x7D, 0x33, 0x71, 0x61, 0x7C, 0x66, 0x74, 0x7B, 0x67, 0x33, 0x67, 0x7C, 0x33, 0x6A, 0x7C, 0x66, 0x33, 0x71, 0x6A, 0x33, 0x51, 0x7C, 0x71, 0x3F, 0x33, 0x51, 0x7C, 0x71, 0x3F, 0x33, 0x51, 0x61, 0x6A, 0x72, 0x7D, 0x3F, 0x33, 0x50, 0x7B, 0x7A, 0x3E, 0x50, 0x7B, 0x66, 0x76, 0x7D, 0x3F, 0x33, 0x72, 0x7D, 0x77, 0x33, 0x43, 0x72, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
/* Screen dependent measurements */ int DxaPerPix; /* number of twips per xp */ int DyaPerPix; /* number of twips per yp */
int xpInch; /* number of xp's per inch */ int xpMaxUser; int xpSelBar; /* width of the selection bar in xp's */
int dxpScrlBar; /* width of the scroll bar in xp's */ int dypScrlBar; /* height of the scroll bar in xp's */ int dxpInfoSize; /* width of the page info area */
int xpRightMax; int xpMinScroll; int xpRightLim;
int ypMaxWwInit; int ypMaxAll;
int dypMax; int dypAveInit; int dypWwInit; int dypBand; int dypRuler = 0; int dypSplitLine; int ypSubSuper; /* adjustment from base line for sub/super */
/* idstr stuff */ int idstrCurrentUndo = IDSTRUndoBase;
/* the following two may eventually be deleted -- check usage in ruler.c */ int vfTabsChanged = FALSE; /* TRUE if any tabs are changed from the ruler */ int vfMargChanged = FALSE; /* TRUE if any indents are changed from the ruler */
#ifdef CASHMERE
struct TBD rgtbdRulerSprm[itbdMax]; #endif /* CASHMERE */
#ifdef RULERALSO
BOOL vfDisableMenus = FALSE;/* TRUE if top level menus (including
the system menu are to be disabled */ int vfTempRuler; /* TRUE if ruler is created because of dialog box creation */ HWND vhDlgTab = (HWND)NULL; HWND vhDlgIndent = (HWND)NULL; struct TBD rgtbdRuler[itbdMax]; #endif /* RULERALSO */
int flashID = 0; /* timer ID for flashing before we put up a messagebox when we are not the active app */
/*-----------------------------------------------------*/ /* Merged MGLOBALS.C and MGLOBALS2.C ..pault 10/26/89 */ /*-----------------------------------------------------*/
/* internal memory stuff */ int *memory; /* ptr to beginning of free space, get incremented after
allocating chunks from memory */ #ifdef OURHEAP
int *pmemMax;/* ptr to max of memory */ CHAR * pmemStart; /* point to start of memory after global data */ unsigned vcbMemTotal; /* total number of free memory bytes */ unsigned cbTotQuotient;/* for calculating % of free space */ unsigned cbTot; /* for calculating % of free space */ #endif
unsigned cwHeapFree; /* number of free heap space in words */
/* MS-WINDOWS related variables */
HWND hParentWw = NULL; /* handle to parent ww (created in
interface module) */ HANDLE hMmwModInstance = NULL; /* handle to memory module instance */ HANDLE vhReservedSpace; /* space reserved for control manger */ long rgbBkgrnd = -1L; /* rgb color of the background */ long rgbText = -1L; /* rgb color of the text */ HBRUSH hbrBkgrnd = NULL; /* handle to background brush */ long ropErase = WHITENESS; /* raster op to erase the screen */ BOOL vfMonochrome = FALSE; /* TRUE iff display is monochrome */
HMENU vhMenu = NULL; /* handle to top level menu */
CHAR *vpDlgBuf; /* pointer to buffer for dialog boxes */
#ifdef INEFFLOCKDOWN /* SEE NOTE IN FINITFARPROCS() */
/* far pointers to dialog functions exported to WINDOWS */ FARPROC lpDialogOpen; FARPROC lpDialogSaveAs; FARPROC lpDialogPrinterSetup; FARPROC lpDialogPrint; FARPROC lpDialogCancelPrint; FARPROC lpDialogRepaginate; FARPROC lpDialogSetPage; FARPROC lpDialogPageMark; FARPROC lpDialogHelp;
#ifdef ONLINEHELP
FARPROC lpDialogHelpInner; #endif /* ONLINEHELP */
FARPROC lpDialogGoTo; FARPROC lpDialogFind; FARPROC lpDialogChange; FARPROC lpDialogCharFormats; FARPROC lpDialogParaFormats; FARPROC lpDialogRunningHead; FARPROC lpDialogTabs; FARPROC lpDialogDivision; FARPROC lpDialogAlert; FARPROC lpDialogConfirm; FARPROC lpFontFaceEnum; FARPROC lpFPrContinue; FARPROC lpDialogWordCvt; #endif /* ifdef INEFFLOCKDOWN */
/* Mouse status flags and cursors */ int vfDoubleClick = FALSE; /* whether click is double click */ HCURSOR vhcHourGlass; /* handle to hour glass cursor */ HCURSOR vhcIBeam; /* handle to i-beam cursor */ HCURSOR vhcArrow; /* handle to arrow cursor */ HCURSOR vhcBarCur; /* handle to back arrow cursor */
#ifdef PENWIN // for PenWindows (5/21/91) patlam
#include <penwin.h>
HCURSOR vhcPen; /* handle to pen cursor */ int (FAR PASCAL *lpfnProcessWriting)(HWND, LPRC) = NULL; VOID (FAR PASCAL *lpfnPostVirtualKeyEvent)(WORD, BOOL) = NULL; VOID (FAR PASCAL *lpfnTPtoDP)(LPPOINT, int) = NULL; BOOL (FAR PASCAL *lpfnCorrectWriting)(HWND, LPSTR, int, LPRC, DWORD, DWORD) = NULL; BOOL (FAR PASCAL *lpfnSymbolToCharacter)(LPSYV, int, LPSTR, LPINT) = NULL; #endif
/* MS-WINDOWS stuff */ HANDLE vhSysMenu; HDC vhMDC = NULL; /* memory DC compatible with the screen */ int dxpbmMDC = 0; /* width of the bitmap attatched to vhMDC */ int dypbmMDC = 0; /* height of the bitmap attatched to vhMDC */ HBITMAP hbmNull; /* handle to an empty bitmap */ HDC vhDCPrinter = NULL; /* DC for the printer */ HWND vhWnd; /* handle to document window */ HANDLE vhAccel; /* handle to menu key accelerator table */
/* modeless dialog handles */ HWND vhDlgRunningHead = (HWND)NULL; HWND vhDlgFind = (HWND)NULL; /* handle to modeless Find dialog box */ HWND vhDlgChange = (HWND)NULL; /* handle to modeless Change dialog box */
HWND vhWndRuler = (HWND)NULL; HWND vhWndCancelPrint = (HWND)NULL; /* handle to modeless Cancel Print dialog box */ #ifndef NOMORESIZEBOX
HWND vhWndSizeBox; /* handle to the size box */ #endif
HWND vhWndPageInfo; /* handle to the page info window */ HWND vhWndMsgBoxParent = (HWND)NULL; /* parent of the message box */
int vfSkipNextBlink = FALSE; /* skip next timed off-transition of caret */ int vfFocus = FALSE; /* Whether we have the input focus */ int vfOwnClipboard = FALSE; /* Whether we are the owner of the clipboard */ MSG vmsgLast; /* last message received */
HFONT vhfPageInfo = NULL; /* handle to the font for the page info */ int ypszPageInfo; /* y position in window to write page info */
/* font related variables */ int vifceMac = ifceMax; union FCID vfcidScreen; union FCID vfcidPrint; struct FCE rgfce[ifceMax]; struct FCE *vpfceMru; struct FCE *vpfceScreen; struct FCE *vpfcePrint; struct FMI vfmiScreen; struct FMI vfmiPrint;
#ifndef NEWFONTENUM
int aspectXFont; int aspectYFont; #endif
#ifdef SYSENDMARK
HFONT vhfSystem = NULL; /* handle to the standard system font for
chEMark. */ struct FMI vfmiSysScreen; /* to keep the metrics info for the system
font. */ int vrgdxpSysScreen[chFmiMax - chFmiMin]; /* Used by vfmiSysScreen. */ #endif /* KANJI */
#if defined(JAPAN) || defined(KOREA) /*t-Yoshio*/
unsigned char Zenstr1[256]; unsigned char Zenstr2[256]; #endif
|