📄 cwindows.h
字号:
VOID FARPUBLIC SaveMouseState(BYTE FAR *); /*OPTIONAL*/
VOID FARPUBLIC RestoreMouseState(BYTE FAR *); /*OPTIONAL*/
#endif /* !NOPROCS */
#ifdef COW
#ifdef BLADE
extern AX PASCAL axMouse;
extern AY PASCAL ayMouse;
#endif
#endif
typedef struct _gheap {
/* FGlobalHeapInfo */
WORD cpDataTotal; /* Sum of all Data blocks */
WORD cpCodeTotal; /* Sum of all Code blocks below fence */
WORD cpFreeTotal; /* Size of all Free blocks below fence */
WORD cpFreeMac; /* Size of largest Free below fence */
WORD cpReserve; /* Size of codefence reserve area */
} GHEAP;
extern BYTE PASCAL fShellPresent; /* DOS 3 : SHELL.EXE hook */
#ifndef NOPROCS
HANDLE FARPUBLIC GlobalAlloc(WORD, DWORD); /*OPTIONAL*/
HANDLE FARPUBLIC GlobalFree(HANDLE); /*OPTIONAL*/
LPSTR FARPUBLIC GlobalLock(HANDLE); /*OPTIONAL*/
DWORD FARPUBLIC GlobalHandle(HANDLE); /*OPTIONAL*/
HANDLE FARPUBLIC GlobalReAlloc(HANDLE, DWORD, WORD); /*OPTIONAL*/
BOOL FARPUBLIC GlobalUnlock(HANDLE); /*OPTIONAL*/
DWORD FARPUBLIC GlobalCompact(DWORD); /*OPTIONAL*/
BOOL FARPUBLIC FSetCodeReserve(WORD *); /*OPTIONAL*/
BOOL FARPUBLIC FGlobalHeapInfo(GHEAP FAR *); /*OPTIONAL*/
DWORD FARPUBLIC RerrExec(char *, char *, char *, BOOL, BOOL); /*OPTIONAL*/
/*OPTIONAL*/
BYTE FAR * FARPUBLIC LpbAppDataUnpack(void); /*OPTIONAL*/
VOID FARPUBLIC DosIdle(void); /*OPTIONAL*/
VOID FARPUBLIC BindSegment(PFN, BOOL); /*OPTIONAL*/
VOID FARPUBLIC AccessSwapFile(BOOL); /*OPTIONAL*/
#endif /* !NOPROCS */
/* GlobalAlloc flags */
#define GMEM_MOVEABLE 0x0002
#define GMEM_ZEROINIT 0x0040
/* rerr return values */
#define rerrOk 0 /* must be zero! */
#define rerrBadFile 2
#define rerrBadPath 3
#define rerrAccessDenied 5
#define rerrNoMemory 8
#define rerrBadEnv 10
#define rerrBadFormat 11
#define rerrBadRead 30
#define rerrBadVersion 90
#define rerrBadMemReq 91
#define rerrMemUnstable 92
#define rerrNoService 93
#define rerrTSR 94
/* Key state masks for keyboard messages (in HIWORD(lParam)) */
#define KK_EXTENDED 0x8000 /* from extended keypad usually */
/* shifts */
#define KK_CAPLOCK 0x4000
#define KK_NUMLOCK 0x2000
#define KK_SCRLOCK 0x1000
#define KK_ALT 0x0800
#define KK_CONTROL 0x0400
#define KK_SHIFT 0x0200
/* for WM_CHAR */
#define KK_VK 0x01ff /* mask to get untranslated VK_ */
/* for WM_KEYUP / WM_KEYDOWN */
#define KK_SC 0x00ff /* mask to get scan code */
#define KJ_SC 0xff00
#define KJ_KANA 0x0080
#define KJ_OTHER 0x0040
#define KJ_KK 0x00b0
#define KJ_COUNT 0x003f
#define abAbortNone 0
#define abAbortESC 1
#define abAbortBRK 2
#define abAbortRepaint 3
extern BOOL PASCAL abAbort; /* normal Abort */
extern BOOL PASCAL fPollKeyboard; /* Poll the keyboard ? */
extern BYTE PASCAL fKeyIsUp, PASCAL fKeyWasUp; /* Key transitions */
extern WORD PASCAL wRateKeyRepeat; /* repeat rate */
#ifndef NOPROCS
#ifdef BLADE
BOOL FARPUBLIC IsAltKeyDown(VOID); /*OPTIONAL*/
#endif
DWORD FARPUBLIC EnableKeyboard(BOOL);
VOID FARPUBLIC PollKeyboard(void);
VOID FARPUBLIC PollPhysicalKeyboard(void);
VOID FARPUBLIC SetShiftKk(WORD);
VOID FARPUBLIC DisableExtendedKeyboard(void);
VOID FARPUBLIC SetTsrProtocol(WORD, BYTE, BYTE);
#endif // !NOPROCS
/*****************************************************************************/
/* Extra Font info */
typedef struct _inft
{
/* character/font size */
BYTE dxChar; /* width of character in pixels */
BYTE dyChar; /* height of character in pixels */
BYTE dyBaseLine; /* base line height */
BYTE ifont; /* font index */
} INFT;
typedef struct _cib
{
/* CSD info block */
WORD flags;
WORD coImbue1; /* default extra color */
WORD sig; /* signature (cwdrv.doc has sigs) */
WORD coGridAndShade; /* KANJI: color for grid & shade */
WORD mppHoriz; /* KANJI: horizontal mickey ratio */
WORD mppVert; /* KANJI: vertical mickey ratio */
} CIB;
typedef struct _cdi
{
/* CSD Default Information */
WORD cwcib; /* length of rgw */
CIB cib; /* info words */
} CDI;
/*****************************************************************************/
/* CSD signatures */
#define sigStandard 0x0000
#define sigNEC98 0x9800
/*****************************************************************************/
/* font variations */
#ifdef KANJI
typedef DWORD FFONT; /* 32 bit FFONT for Kanji */
#else
typedef WORD FFONT; /* 16 bits normal FFONT */
#endif
#define ffontNormal 0x0000 /* normal attributes */
#define ffontUnderline 0x0001
#define ffontDoubleUnderline 0x0002
#define ffontOrUnderline 0x0003 /* ... underline */
#define ffontStrikeThrough 0x0004 /* horizontal strike through */
#define ffontBold 0x0008
#define ffontSubscript 0x0010
#define ffontSuperscript 0x0020
#define ffontMiniCap 0x0030 /* mini capital */
#define ffontItalic 0x0040
#define ffontOrCharacter 0x0080 /* extra field => font extension */
#define ffontReservedBits 0x0F00
#define ffontExtraMask 0xf000 /* one of 16 extra items */
#define ffontOrUnderlineSupport 0x1000
#ifdef KANJI
/* 32-bit ffont extension for Kanji support */
#define ffontVgrid 0x000F0000
#define ffontHgrid 0x00F00000
#define ffontShadeType 0x03000000
#define ffontDoubleWidth 0x04000000
#define ffontDoubleHeight 0x08000000
#define ffontDoubleRight 0x10000000
#define ffontDoubleLower 0x20000000
#define ffontDwLeft (ffontDoubleWidth)
#define ffontDwRight (ffontDoubleWidth | ffontDoubleRight)
#define ffontDhUpper (ffontDoubleHeight)
#define ffontDhLower (ffontDoubleHeight | ffontDoubleLower)
#define ffontReserved 0xC0000000
#endif /*KANJI*/
/* extra ffont (high 16-bit) for inscr.inc */
#define fxfontVgrid 0x000F
#define fxfontHgrid 0x00F0
#define fxfontShadeType 0x0300
#define fxfontDoubleWidth 0x0400
#define fxfontDoubleHeight 0x0800
#define fxfontDoubleRight 0x1000
#define fxfontDoubleLower 0x2000
#define fxfontDwLeft 0x0400
#define fxfontDwRight 0x1400
#define fxfontDhUpper 0x0800
#define fxfontDhLower 0x2800
#define fxfontReserved 0xC000
/* CSD flags */
#define CSD_FORCERESET 0x0001 /* force the CSD to do a BIOS reset */
#define CSD_SNOW 0x0002 /* use snow protection */
#define CSD_NOSETMOUSE 0x0004 /* this hardware has an obscure mouse */
/*****************************************************************************/
/* Installable state */
typedef WORD FINST;
#define finstText 0x0001 /* text mode */
#define finstGraphics 0x0002 /* graphics mode */
#define finstMonochrome 0x0004 /* monochrome mode */
#define finstAlternate 0x0008 /* alternate adapter (2nd screen) */
#define finstFont 0x0010 /* supports fonts */
#define finstAttrFont 0x0020 /* map Font calls into attribute info */
#define finstExtendedMono 0x0040 /* EGA and VGA mono */
#define finstGraphicArc 0x0080 /* Save/Restore Graphics Arc support */
#define finstBltArcCsd 0x0100 /* Specific BltArcCsd available */
#define finstSizeable 0x0200 /* app can specify size when mode is
initialized */
#define finstDisableMouse 0x1000 /* gfx w/o mouse support (hercules,os/2) */
#define finstFastScroll 0x2000 /* fast scroll (BltArc) for gfx text */
#define finstQuestionable 0x4000 /* questionable mode selection */
#define finstAvailable 0x8000 /* available with current hardware */
typedef struct _inst
{
FINST finst;
BYTE axMac;
BYTE ayMac;
/* color palette info */
BYTE coMac; /* maximum color index */
BYTE covMac; /* maximum color value (palette) */
WORD coiMac; /* maximum color intensity */
/* Extra information */
WORD imode; /* video mode */
INFT inft; /* font info (pointers may be NULL) */
WORD ffontSupported; /* valid ffont values */
/* non-grid line styles */
/* buffers (if non-zero then do not need to be allocated */
WORD psPrim; /* primary screen buffer */
WORD psSec; /* secondary screen buffer */
WORD cwExtra; /* requested extra size */
WORD psExtra; /* extra screen buffer (driver's use) */
/* CW internal info */
BIT fAllocPrim:1;
BITS filler:15;
/* Driver specific info */
WORD wDriver1;
WORD reserved2[7];
} INST;
/* Special IMODEs */
#define imodeUnknown 0xffff /* unknown mode */
/*****************************************************************************/
/* Installable characters */
typedef struct _inch
{
/* Single Line Box */
char _chTopLeftCorner1;
char _chTopRightCorner1;
char _chBottomLeftCorner1;
char _chBottomRightCorner1;
char _chTopSide1;
char _chBottomSide1;
char _chLeftSide1;
char _chRightSide1;
/* other single line */
char _chMiddleLeft1;
char _chMiddleRight1;
/* Double Line Box */
char _chTopLeftCorner2;
char _chTopRightCorner2;
char _chBottomLeftCorner2;
char _chBottomRightCorner2;
char _chTopSide2;
char _chBottomSide2;
char _chLeftSide2;
char _chRightSide2;
/*note: no middles */
/* Arrows */
char _chUpArrow;
char _chDownArrow;
char _chLeftArrow;
char _chRightArrow;
/* Misc */
char _chBullet; /* for menu */
char _chMiddleDot; /* for edit */
char _chScrollbar; /* for scroll bar */
char _chElevator; /* for scroll bar */
char _chShadowInit; /* b&w shadow character */
/* For Overlapping windows */
char _chClose; /* Close box */
char _chZoomIn; /* Zoom in */
char _chZoomOut; /* Zoom out */
char _chUpDownArrow; /* double arrow */
char _chLeftRightArrow; /* double arrow */
WORD reserved[16];
} INCH;
/*****************************************************************************/
/* screen save info */
typedef WORD FVIDS; /* flags */
#define fvidsChAttr 1 /* video buffer is in form ch:attr */
typedef struct _vids
{
BYTE mode; /* screen mode */
BYTE page; /* page # */
FVIDS fvids; /* flags for saved state */
WORD cwVidData; /* # of bytes of screen data */
WORD cwExtra; /* # of extra bytes for mode info */
WORD rgwExtra[1]; /* actually rgwExtra[cwExtra] */
} VIDS; /* Video state */
/*****************************************************************************/
#define fmemFixed 1 /* always set !! */
#define fmemNear 2 /* allocate near */
/* limit of near space / driver service */
#define cbNearMemServiceMax 128
/* INDT: Driver Service Types */ /* Extension and Owner/Initiator */
#define indtNil 0
#define indtKeyboard 1 /* .KBD CW */
#define indtCharacterScreen 2 /* .CSD CW */
#define indtGraphicScreen 3 /* .GSD CW */
#define indtCharacterPrinter 4 /* .PRD ? */
#define indtGraphicPrinter 5 /* .GPD CW */
#define indtSystem 6 /* .SYD CW */
#define indtSerialComm 7 /* .SCD EBU */
#define indtCellPrinter 8 /* .CPD MSKK */
#define indtMachineData 9 /* .MDD MSKK */
#define indtKkcInterface 10 /* .KID MSKK */
#define indtPseudoPrinter 11 /* .PPD MSKK */
#define indtKeytop 12
#define indtFileTransfer 13 /* .FTD EBU Works */
/* ... others to be defined ... */
typedef struct _indv
{
/* input values */
BYTE indt; /* service wanted */
BYTE filler; /* reserved */
LPFN * rglpfn; /* where to put vectors */
WORD cpfnNeedMin; /* # entries needed */
WORD cpfnNeedMac; /* # entries wanted */
/* return values */
WORD psLoaded; /* != 0 => loaded */
WORD cpfnLoaded; /* # entries loaded */
} INDV;
#ifndef NOPROCS
WORD FARPUBLIC RerrLoadDrv(char *, INDV *, WORD); /* OPTIONAL */
WORD FARPUBLIC RerrLoadCwDrv(char *); /* OPTIONAL */
WORD FARPUBLIC RerrLoadDrvFd(WORD, INDV *, WORD); /* OPTIONAL */
WORD FARPUBLIC RerrLoadCwDrvFd(WORD); /* OPTIONAL */
VOID FARPUBLIC FreeDrv(INDV *, WORD); /* OPTIONAL */
VOID FARPUBLIC FreeCwDrv(void); /* OPTIONAL */
#endif /* !NOPROCS */
extern INST PASCAL instCur;
extern INCH PASCAL inch; /* near buffer for characters */
extern BOOL PASCAL fFontAvailable; /* extra "ffont" drawing available ? */
/* name aliases for the actual characters */
#define chTopSide1 (inch._chTopSide1)
#define chBottomSide1 (inch._chBottomSide1)
#define chLeftSide1 (inch._chLeftSide1)
#define chRightSide1 (inch._chRightSide1)
#define chTopLeftCorner1 (inch._chTopLeftCorner1)
#define chTopRightCorner1 (inch._chTopRightCorner1)
#define chBottomLeftCorner1 (inch._chBottomLeftCorner1)
#define chBottomRightCorner1 (inch._chBottomRightCorner1)
#define chMiddleLeft1 (inch._chMiddleLeft1)
#define chMiddleRight1 (inch._chMiddleRight1)
#define chTopSide2 (inch._chTopSide2)
#define chBottomSide2 (inch._chBottomSide2)
#define chLeftSide2 (inch._chLeftSide2)
#define chRightSide2 (inch._chRightSide2)
#define chTopLeftCorner2 (inch._chTopLeftCorner2)
#define chTopRightCorner2 (inch._chTopRightCorner2)
#define chBottomLeftCorner2 (inch._chBottomLeftCorner2)
#define chBottomRightCorner2 (inch._chBottomRightCorner2)
#define chUpArrow (inch._chUpArrow)
#define chDownArrow (inch._chDownArrow)
#define chRightArrow (inch._chRightArrow)
#define chLeftArrow (inch._chLeftArrow)
#define chBullet (inch._chBullet)
#define chMiddleDot (inch._chMiddleDot)
#define chScrollbar (inch._chScrollbar)
#define chElevator (inch._chElevator)
#define chShadowInit (inch._chShadowInit)
/* for overlapping windows */
#define chClose (inch._chClose)
#define chZoomIn (inch._chZoomIn)
#define chZoomOut (inch._chZoomOut)
#define chUpDownArrow (inch._chUpDownArrow)
#define chLeftRightArrow (inch._chLeftRightArrow)
/*****************************************************************************/
/* Screen Procedures */
typedef WORD FAR * (FAR PASCAL *LPFN_DRV_ALLOC)(WORD, WORD);
typedef VOID (FAR PASCAL *LPFN_DRV_FREE)(WORD FAR *);
#ifndef NOPROCS
WORD FARPUBLIC ImodeGuessCurrent(void); /*OPTIONAL*/
BOOL FARPUBLIC FQueryInst(INST *, WORD); /*OPTIONAL*/
BOOL FARPUBLIC FAllocInstBuffers(INST *, LPFN_DRV_ALLOC, BOOL); /*OPTIONAL*/
VOID FARPUBLIC FreeInstBuffers(INST *, LPFN_DRV_FREE); /*OPTIONAL*/
BOOL FARPUBLIC FAllocOverlapTable(INST *, LPFN_DRV_ALLOC); /*OPTIONAL*/
VOID FARPUBLIC FreeOverlapTable(LPFN_DRV_FREE); /*OPTIONAL*/
BOOL FARPUBLIC FInitScreen(INST *, WORD); /*OPTIONAL*/
VOID FARPUBLIC EndScreen(BOOL); /*OPTIONAL*/
BOOL FARPUBLIC FGetColorPalette(WORD, WORD *, WORD *); /*OPTIONAL*/
VOID FARPUBLIC SetColorPalette(WORD, WORD, WORD *); /*OPTIONAL*/
VOID FARPUBLIC MoveHwCursCsd(AX, AY, WORD); /*OPTIONAL*/
BOOL FARPUBLIC FQueryInft(INFT *, WORD); /*OPTIONAL*/
WORD FARPUBLIC CbSizeVids(void); /*OPTIONAL*/
BOOL FARPUBLIC FSaveVids(VIDS *, INST *); /*OPTIONAL*/
BOOL FARPUBLIC FRestoreVids(VIDS *); /*OPTIONAL*/
VOID FARPUBLIC SaveVidData(VIDS *, WORD FAR *); /*OPTIONAL*/
VOID FARPUBLIC RestoreVidData(VIDS *, WORD FAR *); /*OPTIONAL*/
VOID FARPUBLIC EnableVidsMonitor(BOOL); /*OPTIONAL*/
VOID FARPUBLIC GetCSDDefaultInfo(CDI *); /*OPTIONAL*/
VOID FARPUBLIC SetCSDDefaultInfo(CDI *); /*OPTIONAL*/
#ifdef KANJI
VOID FARPUBLIC GetCharMap(INFT *, WORD, BYTE *);
VOID FARPUBLIC SetCoBackPriority(BYTE FAR *, WORD); /*OPTIONAL*/
#else /*!KANJI*/
VOID FARPUBLIC GetCharMap(INFT *, BYTE, BYTE *);
#endif /*KANJI*/
#endif /* !NOPROCS */
#if !defined(ADM)
WORD FARPUBLIC MessageBox(char *, char *, char *, WORD);
WORD FARPUBLIC MessageBoxAxAy(char *, char *, char *, WORD, AX, AY);
VOID FARPUBLIC SetDialogCaption(HANDLE, char *); /*OPTIONAL*/
BOOL FARPUBLIC EndDlgTmc(WORD); /*OPTIONAL*/
BOOL FARPUBLIC PassMsgToDialogProc ( WORD, WORD, WORD, WORD, WORD ); /*OPTIONAL*/
#else
VOID FARPUBLIC SetDialogCaption(HANDLE, char *); /*OPTIONAL*/
WORD FARPUBLIC GetDlgItemText (PVOID, char *, WORD);
VOID FARPUBLIC SetDlgItemText (PVOID, char *, BOOL);
#endif
VOID FARPUBLIC HiliteDialogAccel(void); /*OPTIONAL*/
#define dlmReturn 0x7fff // for PWB guys to process return key events.
/* Message Box Definitions */
#ifndef NOMB
#define IDDEFAULT 10
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -