📄 cwindows.h
字号:
char _chLeftRightArrow; /* double arrow */
WORD reserved[16];
} INCH;
/*****************************************************************************/
/* font variations */
#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
/*****************************************************************************/
/* 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 */
#define indtNil 0
#define indtKeyboard 1 /* .KBD */
#define indtCharacterScreen 2 /* .CSD */
#define indtGraphicScreen 3 /* .GSD */
#define indtCharacterPrinter 4 /* .PRD */
#define indtGraphicPrinter 5 /* .GPD */
#define indtSystem 6 /* .SYD */
#define indtSerialComm 7 /* .SCD */
/* ... 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;
WORD FARPUBLIC RerrLoadDrv(char *, INDV *, WORD); /* OPTIONAL */
WORD FARPUBLIC RerrLoadCwDrv(char *); /* OPTIONAL */
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 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 *);
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 *); /*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 GetCharMap(INFT *, BYTE, BYTE *);
WORD FARPUBLIC MessageBox(char *, char *, char *, WORD);
VOID FARPUBLIC SetDialogCaption(HANDLE, char *);
VOID FARPUBLIC HiliteDialogAccel(void);
/* Message Box Definitions */
#ifndef NOMB
#define IDDEFAULT 1
#define IDCANCEL 2
#define IDNO 3
#define IDOK IDDEFAULT
#define IDYES IDDEFAULT
#define IDRETRY IDDEFAULT
#define IDABORT IDDEFAULT
#ifdef HELP_BUTTON
#define IDHELP 4
#endif // HELP_BUTTON
#define MB_OK 1
#define MB_YESNOCANCEL 2
#define MB_RETRYCANCEL 3
#define MB_OKCANCEL 4
#define MB_ABORT 5
#define MB_YESNO 6
#define MB_RETRY 7
#define MB_TYPE 0x0f /* message type */
#define MB_BEEP 0x10
#define MB_CAPTION 0x20 /* 1st param is caption */
#ifdef HELP_BUTTON
#define MB_NOHELP 0x8000
#endif // HELP_BUTTON
#endif /*!NOMB*/
/* for Special MessageBox */
extern BYTE FAR * PASCAL lpbWorkTemp; /* App should never use directly */
#define InitSpecialMessageBox(lpbBuff) \
{ \
Assert(lpbWorkTemp == NULL); \
lpbWorkTemp = (lpbBuff); \
}
#define EndSpecialMessageBox() \
{ \
Assert(lpbWorkTemp != NULL); \
lpbWorkTemp = NULL; \
}
#ifndef NOWNDMACROS
#define wndEdit(id, fBorder, fEnabled, ax, ay, dax, day, pwndParent, pwndSibbling, szBuf, cchMax, chFill, isa, isaSel) {\
id, WS_CHILD | WS_EDIT | (fBorder ? WS_BORDER : 0), \
0, fEnabled, {ax, ay, ax+dax, ay+day}, \
{((fBorder) ? ax+1 : ax), (fBorder ? ay+1 : ay), \
((fBorder) ? ax+dax-1 : ax+dax), (fBorder ? ay+day-1 : ay+day)}, \
(PLFN) InternalEditWndProc, pwndParent, pwndSibbling, NULL, 0, 0, \
{0, (WORD) szBuf, cchMax, isa, isaSel, chFill, 0, 0, 0, 0, TRUE, 0, \
(WORD) szBuf}}
/* InternalEditWndProc must be forward defined for CS compiler */
DWORD FARPUBLIC InternalEditWndProc(PWND, WORD, WORD, DWORD);
#endif /* !NOWNDMACROS */
/* for selection (SetTmcSel) */
#define ichSelectEnd (0x7fff) /* select to end */
VOID FARPUBLIC SetEditText(PWND, char *, BOOL);
VOID FARPUBLIC SetEditWidth(PWND, WORD); /* OPTIONAL */
WORD FARPUBLIC GetEditText(PWND, char *, WORD);
DWORD FARPUBLIC EditWndProc(PWND, WORD, WORD, DWORD);
VOID FARPUBLIC DefaultEditMgrInit(VOID); /* OPTIONAL */
#define EN_CHANGE 1
#define EN_CURSORMOVED 2
#ifndef NOMSG
/* Message structure */
typedef struct _msg
{
PWND pwnd;
WORD message;
WORD wParam;
DWORD lParam;
DWORD time;
} MSG;
typedef MSG *PMSG;
#ifndef DOS5
extern BOOL PASCAL fMessage;
#ifdef DUAL
extern DWORD PASCAL semaMessage; /* message semaphore */
#define hsemaMessage ((DWORD) (DWORD FAR *) &semaMessage)
#endif /*DUAL*/
#else
extern DWORD PASCAL semaMessage; /* message semaphore */
#define hsemaMessage ((DWORD) (DWORD FAR *) &semaMessage)
#endif
#endif /*!NOMSG*/
#ifndef NOWINMESSAGES
/* Window Messages */
#define WM_NULL 0x0000
#define WM_CREATE 0x0001
#define WM_WANTFOCUS 0x0005
#define WM_MAKEACTIVE 0x0006
#define WM_SETFOCUS 0x0007
#define WM_KILLFOCUS 0x0008
#define WM_PAINT 0x000f
#define WM_QUIT 0x0012
#define WM_KEYFIRST 0x0100
#define WM_KEYLAST 0x0102
#define WM_KEYDOWN 0x0100
#define WM_KEYUP 0x0101
#define WM_CHAR 0x0102
#define WM_CUT 0x0103
#define WM_PASTE 0x0104
#define WM_COPY 0x0105
#define WM_INSERT 0x0106
#define WM_MENUIDLE 0x0110 /* Menu Idle */
#define WM_COMMAND 0x0111
#define WM_MENUSELECT 0x0112 /* selecting a menu item */
#define WM_MENUSTART 0x0113 /* starting a menu action */
#define WM_HSCROLL 0x0114
#define WM_VSCROLL 0x0115
#define WM_INITMENUPOPUP 0x0116
#define WM_ALARM 0x0117
#define WM_MOUSEFIRST 0x0200
#define WM_LMOUSELAST 0x0203 /* last of Left mouse actions */
#define WM_MOUSELAST 0x0206
#define WM_MOUSEMOVE 0x0200 /* mouse related constants */
#define WM_LBUTTONDOWN 0x0201
#define WM_LBUTTONUP 0x0202
#define WM_LBUTTONDBLCLK 0x0203
#define WM_RBUTTONDOWN 0x0204
#define WM_RBUTTONUP 0x0205
#define WM_RBUTTONDBLCLK 0x0206
/* Edit Wnd Proc Messages */
#define EM_SETSEL 0x0300
#define EM_GETSEL 0x0301
/* Overlap Wnd Proc Messages */
#define WM_ACTIVATE 0x0320
#define WM_ZOOM 0x0321
#define WM_CLOSE 0x0322
#define WM_MOVE 0x0323
#define WM_SIZE 0x0324
/*WM-DIALOG is actually private (and LB_SETWIDTH)*/
#define WM_DIALOG 0x0380
/* Listbox Proc Messages */
#define WM_LISTBOX_COMMAND WM_DIALOG
#define LB_RESETCONTENT 0x0340
#define LB_ADDSTRING 0x0341
#define LB_DELETESTRING 0x0342
#define LB_SETCURSEL 0x0343
#define LB_GETCURSEL 0x0344
#ifdef LISTBOX_HORIZ
#define LB_SETWIDTH 0x0345
#endif /*LISTBOX_HORIZ*/
#define LB_GETTEXT 0x0346
#define LB_GETCOUNT 0x0347
#define LB_REPLACESTRING 0x0348
#define LB_INSERTSTRING 0x0349
/* private window messages start here */
#define WM_USER 0x0400
#endif
/* Window's aliases for KK_ states */
#define KK_MENU KK_ALT
#define KK_CAPITAL KK_CAPLOCK
/* HELP */
#define VK_HELP_KEY VK_F1
/* listbox notification codes */
#define LBN_SELCHANGE 0
#define LBN_DBLCLK 1
#define LBN_SELECT_DONE 2
/* List Box Selection Codes */
#define lbrCause 0xf
#define lbrNone 0
#define lbrMouse 1
#define lbrScroll 2
#define lbrKeys 3
#define lbrSpace 4
#define lbrOther 5
#define flbrReselect 0x10
/* help types/contexts */
#define hemMenu 1
#define hemMenuItem 2
#define hemMbox 3
#define hemDialog 4
#define hemUserMin 0x10 /* For Application contexts */
/* help id's for message boxes */
#ifndef NOMB
#define hidMboxOk MB_OK
#define hidMboxYesNoCancel MB_YESNOCANCEL
#define hidMboxRetryCancel MB_RETRYCANCEL
#define hidMboxOkCancel MB_OKCANCEL
#define hidMboxAbort MB_ABORT
#define hidMboxYesNo MB_YESNO
#define hidMboxRetry MB_RETRY
#endif /*!NOMB*/
VOID FARPUBLIC SetAlarm(PWND, WORD);
VOID FARPUBLIC KillAlarm(void);
VOID FARPUBLIC UngetMessage(PMSG);
BOOL FARPUBLIC PeekMessage(PMSG);
PWND FARPUBLIC GetFocus(void);
PWND FARPUBLIC SetFocus(PWND);
VOID FARPUBLIC FlushAbort(void);
PWND FARPUBLIC SetCapture(PWND);
VOID FARPUBLIC ReleaseCapture(void);
DWORD FARPUBLIC DispatchMessage(PMSG);
BOOL FARPUBLIC PostMessage(PWND, WORD, WORD, DWORD);
DWORD FARPUBLIC SendMessage(PWND, WORD, WORD, DWORD);
WORD FARPUBLIC SetDoubleClickTime(WORD); /*OPTIONAL*/
VOID FARPUBLIC SynthesizeShiftKeys(WORD, WORD); /*OPTIONAL*/
#ifndef NOCOLOR
/* * General colors */
#define isaBackground 0
#define isaHilite 1 /* hilite / inversion */
#define isaGreyed 2 /* not currently used */
#define isaEnabled 3
#define isaDisabled 4
#define isaAlert 5
/* * Dialog elements : */
#define isaDialogBox 6 /* the actual dialog box */
#define isaStatic isaDialogBox /* static text */
#define isaButton isaDialogBox /* radio/check buttons */
#define isaPushButton 7 /* push buttons */
#define isaButtonDown 8 /* pushed button */
#define isaListBox 9 /* listbox background */
#define isaEdit isaDialogBox
/* * Scroll Bars : */
#define isaScrollbar 10
#define isaElevator 11
/* * Menus : */
#define isaMenuBox 12 /* box around pull downs */
#define isaMenu 13 /* non-selected MENU */
#define isaMenuSelected 14 /* selected menu item */
#define isaMenuHilite 15 /* hilited character */
/* hilited character under selection */
#define isaMenuHiliteSel 16 /* for menu titles */
#define isaItemHiliteSel 17 /* for menu items */
#define isaDialogAccel 18 /* dialog accelerators */
/* * Shadows : */
#define isaShadow 19
/* User Colors : */
#define isaUserMin 20
#define isaUserMax (isaUserMin+16)
#define isaMax isaUserMax
#endif /*!NOCOLOR*/
#ifndef NOMENUS
/* hack for nameless unions in CC */
#ifdef CC
#define CC_USZ u
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -