📄 cwindows.h
字号:
/*
CW : Character Windows
cwindows.h
CC should be defined for compilation with Cmerge.
If defined, the following flags inhibit definition
of the indicated constants.
NOALL Defines all the following:
NOMINMAX Macros min(a,b) and max(a,b)
NOWND WND / PWND typedef's or macros
NOWINSTYLES WS_*
NOCOLOR colors or ISA's
NORECT typedefs ARC, RRC
NOMSG typedef MSG
NOWINMESSAGES WM_*
NOMENUS menus
NOMEMMGR LMEM_*
NODRAW drawing macros / constants
NOSCROLL SB_*
NOSUBSTYLES BS_*, LBS_*, ES_*
NOVIRTUALKEYCODES VK_*
NOMB MB_* & ID's
NOPROCS procedure definitions (always for CS)
NOWNDMACROS window creation macros
-- Created Wed Sep 14 16:42:26 1988 */
#ifdef NOALL
#define NOMINMAX
#define NOWND
#define NOWINSTYLES
#define NOCOLOR
#define NORECT
#define NOMSG
#define NOWINMESSAGES
#define NOKEYSTATE
#define NOMENUS
#define NOMEMMGR
#define NODRAW
#define NOSCROLL
#define NOSUBSTYLES
#define NOVIRTUALKEYCODES
#define NOMB
#define NOWNDMACROS
#endif /*NOALL*/
#ifndef CC
/* -- Pcode Specific Definitions -- */
#ifndef EXPORT
#define EXPORT export
#endif
#ifndef NATIVE
#define NATIVE native
#endif
#else
/* -- Cmerge Compiler -- */
#ifndef CDECL
#define CDECL cdecl
#endif
#endif /*CC*/
#ifndef PASCAL
#define PASCAL pascal
#endif
#define FALSE 0
#define TRUE 1
#define NULL 0
#define FAR far
#define LONG long
#define VOID void
#ifdef CC
#define NEAR near
#else
#define NEAR
#endif
#define FARPUBLIC FAR PASCAL /* all interfaces FAR */
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef int BOOL;
typedef int (FARPUBLIC *PFN)(); /* General Procedure */
typedef BOOL (FARPUBLIC *PFFN)(); /* BOOL Procedure */
typedef VOID (FARPUBLIC *PVFN)(); /* Void Procedure */
typedef WORD (FARPUBLIC *PWFN)(); /* Word Procedure */
typedef DWORD (FARPUBLIC *PLFN)(); /* DWORD Procedure */
typedef VOID (FARPUBLIC *LPFN)(); /* explicit FAR procedure */
typedef WORD HANDLE;
typedef unsigned BIT;
typedef unsigned BITS;
/* special type for WndProc pointers */
typedef DWORD (FARPUBLIC *PLFN_WNDPROC)(struct _wnd *, WORD, WORD, DWORD);
/* BYTE/WORD types */
#ifndef CC /* Pcode => WORD */
typedef WORD AX;
typedef WORD AY;
typedef WORD RX;
typedef WORD RY;
typedef WORD ISA;
#else
typedef BYTE AX;
typedef BYTE AY;
typedef BYTE RX;
typedef BYTE RY;
typedef BYTE ISA;
#endif /*CC*/
typedef char FAR *LPSTR;
typedef int FAR *LPINT;
#ifndef NOMINMAX
#define max(a,b) ((a) > (b) ? (a) : (b))
#define min(a,b) ((a) < (b) ? (a) : (b))
#endif
#define MAKELONG(l, h) ((long)(((unsigned)(l)) | ((unsigned long)((unsigned)(h))) << 16))
#define MAKEWORD(l, h) ((WORD)(((BYTE)(l)) | ((WORD)((BYTE)(h))) << 8))
#define LOWORD(l) ((WORD)(l))
#define HIWORD(l) ((WORD)(((DWORD)(l) >> 16) & 0xffff))
#define LOBYTE(w) ((BYTE) ((w) & 0xff))
#define HIBYTE(w) ((BYTE)(((WORD)(w) >> 8) & 0xff))
/* DCHAR = Double Byte Character */
typedef WORD DCHAR;
/* CHAR = unsigned char */
typedef unsigned char CHAR;
/* ACHAR = either a DCHAR or a CHAR */
typedef CHAR ACHAR;
/*****************************************************************************/
#ifndef NORECT
typedef struct _rrc
{
BYTE rxLeft;
BYTE ryTop;
BYTE rxRight;
BYTE ryBottom;
} RRC;
typedef RRC *PRRC;
typedef struct _arc
{
BYTE axLeft;
BYTE ayTop;
BYTE axRight;
BYTE ayBottom;
} ARC;
typedef ARC *PARC;
typedef struct _box
{
char chTopLeftCorner;
char chTopRightCorner;
char chBottomLeftCorner;
char chBottomRightCorner;
char chTopSide;
char chBottomSide;
char chLeftSide;
char chRightSide;
} BOX;
extern BOX PASCAL boxSingle, PASCAL boxDouble;
extern BOX PASCAL boxActiveWindowOut;
extern BOX PASCAL boxInactiveWindowOut;
extern BOX PASCAL boxActiveWindowIn;
extern BOX PASCAL boxInactiveWindowIn;
extern BYTE PASCAL axMac;
extern BYTE PASCAL ayMac;
/* all CW applications should work with screens up to 254x254 */
#define axMax 254
#define ayMax 254
#endif /*!NORECT*/
#ifndef NOWND
#ifndef cwExtraWnd
#ifdef CC
/* -- for CC compiler : fixed length */
#define cwExtraWnd 1
#else
/* -- for CS compiler : variable length */
#define cwExtraWnd
#endif
#endif
typedef struct _wnd
{
WORD id;
BITS style:14;
BITS fCursorOn:1;
BITS fEnabled:1;
ARC arcWindow;
ARC arcClipping;
PLFN_WNDPROC pfnWndProc; /* Medium Model */
struct _wnd *pwndParent;
struct _wnd *pwndSibling;
struct _wnd *pwndChild;
BYTE axCursor;
BYTE ayCursor;
WORD rgwExtra[cwExtraWnd];
} WND;
typedef WND *PWND;
#endif /*!NOWND*/
extern BYTE PASCAL fMousePresent; /* valid after init */
VOID FARPUBLIC LeaveCow(BOOL); /*OPTIONAL*/
/* temporary leave COW */
/* Swapped Cow init/exit */
#ifdef CC
VOID FAR CDECL exit(int); /*OPTIONAL*/
#endif
VOID FARPUBLIC GetProgDir(char *); /*OPTIONAL*/
/* Non-swapped Cow init/end */
BOOL FARPUBLIC FInitCow(void); /*OPTIONAL*/
VOID FARPUBLIC EndCow(WORD); /*OPTIONAL*/
/*** mcb - mouse cursor block */
typedef struct mcb
{
WORD colHot; /* Hot Spot for */
WORD rowHot; /* graphics mouse cursor. */
WORD rgwAndMaskGfx[16]; /* Bit map masks for */
WORD rgwXorMaskGfx[16]; /* graphics mouse cursor. */
WORD wAndMaskText; /* Character and Attribute masks for */
WORD wXorMaskText; /* text mouse cursor. */
} MCB;
/*** mcb - mouse conditional off block */
typedef struct mcob
{
WORD xLeft;
WORD yTop;
WORD xRight;
WORD yBottom;
} MCOB;
/* Key state masks for mouse messages (in wParam) */
#define MK_LBUTTON 0x0001
#define MK_RBUTTON 0x0002
#define MK_SHIFT 0x0004
#define MK_CONTROL 0x0008
#define MK_MBUTTON 0x0010
#define MK_NONCLIENT 0x0060 /* either X or Y outside */
#define MK_NONCLIENT_X 0x0020
#define MK_NONCLIENT_Y 0x0040
#define MK_MENU 0x8000
BOOL FARPUBLIC FEnableMouse(BOOL);
VOID FARPUBLIC SetMouseCursor(BYTE FAR *); /*OPTIONAL*/
VOID FARPUBLIC MouseConditionalOff(PARC); /*OPTIONAL*/
VOID FARPUBLIC SetMousePos(WORD, WORD); /*OPTIONAL*/
VOID FARPUBLIC SetMouseDoubleSpeed(WORD); /*OPTIONAL*/
BOOL FARPUBLIC SwapMouseButton(BOOL); /*OPTIONAL*/
WORD FARPUBLIC CbSizeMouseState(void); /*OPTIONAL*/
VOID FARPUBLIC SaveMouseState(BYTE FAR *); /*OPTIONAL*/
VOID FARPUBLIC RestoreMouseState(BYTE FAR *); /*OPTIONAL*/
extern BYTE PASCAL fShellPresent; /* DOS 3 : SHELL.EXE hook */
HANDLE FARPUBLIC GlobalAlloc(WORD, DWORD); /*OPTIONAL*/
HANDLE FARPUBLIC GlobalFree(HANDLE); /*OPTIONAL*/
LPSTR FARPUBLIC GlobalLock(HANDLE); /*OPTIONAL*/
HANDLE FARPUBLIC GlobalReAlloc(HANDLE, DWORD, WORD); /*OPTIONAL*/
BOOL FARPUBLIC GlobalUnlock(HANDLE); /*OPTIONAL*/
DWORD FARPUBLIC GlobalCompact(DWORD); /*OPTIONAL*/
DWORD FARPUBLIC RerrExec(char *, char *, char *, BOOL, BOOL);/*OPTIONAL*/
VOID FARPUBLIC BindSegment(PFN, BOOL); /*OPTIONAL*/
VOID FARPUBLIC AccessSwapFile(BOOL); /*OPTIONAL*/
/* RerrExec return values */
#define rerrOk 0
#define rerrBadFile 2
#define rerrBadPath 3
#define rerrNoMemory 8
#define rerrBadFormat 11
#define rerrBadRead 30
#define rerrBadVersion 90
#define rerrBadMemReq 91
/* 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 */
extern BOOL PASCAL fAbort; /* normal Abort */
extern BOOL PASCAL fPollKeyboard; /* Poll the keyboard ? */
extern BYTE PASCAL fKeyIsUp, fKeyWasUp; /* Key transitions */
extern WORD PASCAL wRateKeyRepeat; /* repeat rate */
VOID FARPUBLIC EnableKeyboard(BOOL);
VOID FARPUBLIC PollKeyboard(void);
VOID FARPUBLIC SetShiftKk(WORD);
VOID FARPUBLIC DisableExtendedKeyboard(void);
/*****************************************************************************/
/* 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;
/*****************************************************************************/
/* Installable state */
typedef WORD FINST;
#define finstText 1 /* text mode */
#define finstGraphics 2 /* graphics mode */
#define finstMonochrome 4 /* monochrome */
#define finstAlternate 8 /* alternate adapter (2nd screen) */
#define finstFont 0x10 /* supports fonts */
#define finstCgaSnow 0x20 /* indicate snow CGA (see user\screen.asm) */
#define finstDisableMouse 0x1000 /* for color grpahics mode not supported by mouse (hercules)*/
#define finstFastScroll 0x2000 /* fast scroll (BltArc) for graphics 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 */
/* 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 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -