home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
rtsi.com
/
2014.01.www.rtsi.com.tar
/
www.rtsi.com
/
OS9
/
OSK
/
CMDS
/
memacs400_src.lzh
/
MEMACS400
/
H
/
mswin.h
< prev
next >
Wrap
Text File
|
1996-04-25
|
8KB
|
204 lines
/* This file provides definitions for the C source and resource scripts
for support of operation under the Microsoft Windows environment on
an IBM-PC or compatible computer.
Must be compiled with Borland C++ 2.0 or MSC 6.0 or later versions
It should not be compiled if the WINDOW_MSWIN symbol is not set */
/* compile flags */
#define GRINDERS 8 /* 0 to use the hourglass, 8 to use the animated
grinder (8 is the number of animation steps) */
#define MEMTRACE 1 /* adds a debugging trace to mswmem.c (used only
if SUBALLOC (below) is 1) */
/* The SUBALLOC #define implements malloc/free/realloc by segment
suballocation routines (needed for Borland C 2.0, but not necessary
under Borland C 3.0). Not needed under MSC 7.0 either. */
#if WINDOW_MSWIN32
#define SUBALLOC 0
#else
#if TURBO
#if defined(__BORLANDC__) && (__TURBOC__<0x300)
#define SUBALLOC 1 /* BC++ 2.0 */
#else
#define SUBALLOC 0 /* TC++ 1.0 or BC++ 3.x */
#endif /* defined(__BORLANDC__) && (__TURBOC__<0x300) */
#endif /* TURBO */
#if MSC
#if _MSC_VER < 700
#define SUBALLOC 1
#else
#define SUBALLOC 0
#endif /* _MSC_VER < 700 */
#endif /* MSC */
#endif /* WINDOW_MSWIN32 */
#include <shellapi.h>
#include "mswrid.h" /* contains all the Resource IDs */
#if WINDOW_MSWIN32
#define LPDATA(p) ((LPARAM)(LPSTR)(p))
#define HDROP HANDLE
#define NOTIFICATION_CODE HIWORD(wParam) /* for WM_COMMAND parsing */
#else
#define LPDATA(p) ((LPSTR)(p))
#define NOTIFICATION_CODE HIWORD(lParam)
#define WNDPROC FARPROC
#endif
/* macros */
#define MLSIZE NSTRING /* message line buffer size */
/* offsets for the screen windows extra bytes */
#define GWL_SCRPTR 0 /* SCREEN structure pointer */
#define GWW_SCRCX (GWL_SCRPTR+sizeof(LONG)) /* client area width */
#define GWW_SCRCY (GWW_SCRCX+sizeof(WORD)) /* client area height */
#define SCRWNDEXTRA (GWW_SCRCY+sizeof(WORD))
/* offsets for the frame window extra bytes */
#define GWW_FRMID 0 /* Id seen by other emacs apps */
#define FRMWNDEXTRA (GWW_FRMID+sizeof(WORD))
/* structures */
typedef struct CellMetrics { /* coordinate-related parameters of a font */
short OffsetX, OffsetY; /* offset of column 0 or row 0, relative
to the client area upper left corner */
short LeadingY, HalfLeadingY; /* external leading between rows */
short SizeX, SizeY; /* character cell size */
short MLHeight; /* height of the message line */
} CellMetrics;
#ifdef termdef /* in mswdrv.c only */
char IniFile[] = "EMACS.INI";
char ProgName [] = PROGNAME;
int CurrentRow = 0;
int CurrentCol = 0;
BOOL MouseTracking = FALSE;
BOOL InternalRequest = FALSE;
BOOL TakingANap = FALSE;
int caret_shape = 0;
/* Global uninitialized variables */
HWND hFrameWnd; /* main (frame) window */
HWND hMDIClientWnd; /* MDI client window */
HANDLE hEmacsInstance; /* module instance */
BOOL Win386Enhanced; /* Windows 386 enhanced mode */
BOOL Win31API; /* Windows 3.1 or later version */
HCURSOR hScreenCursor, hTrackCursor, hNotQuiescentCursor, hHourglass;
char *ScreenClassName; /* MDI childs class name */
char *MLBuf; /* message line buffer */
HFONT hEmacsFont; /* font used for display */
CellMetrics EmacsCM; /* cell metrics of that font */
#if GRINDERS != 0
HCURSOR GrinderCursor [GRINDERS];/* handles for the grinder animation */
int GrinderIndex;
#endif
char *MainHelpFile; /* Emac's help file name and useage flag */
BOOL MainHelpUsed;
char HelpEngineFile [NFILEN];/* user help file and useage flag */
BOOL ColorDisplay; /* TRUE if the display is color-capable */
#else
extern char IniFile[DUMMYSZ];
extern char ProgName [DUMMYSZ];/* used all over the place for captions,
etc... */
extern int CurrentRow;
extern int CurrentCol; /* caret positions (in text coordinates) */
extern BOOL MouseTracking; /* TRUE if mouse in tracking/dragging mode */
extern BOOL InternalRequest;
/* TRUE for a request that originates from the mswxxx modules. This
is meant to avoid infinite recursions for requests that could
come from both MS-Windows or the editor's core (for instance
resizing, screen activation...) */
extern BOOL TakingANap; /* TRUE during execution of TakeANap() */
extern int caret_shape; /* 0 = HorzBar, 1 = VertBar, 2 = CellSize */
/* Global uninitialized variables */
extern HWND hFrameWnd; /* main (frame) window */
extern HWND hMDIClientWnd; /* MDI client window */
extern HANDLE hEmacsInstance; /* module instance */
extern BOOL Win386Enhanced; /* Windows 386 enhanced mode */
extern BOOL Win31API; /* Windows 3.1 or later version */
extern HCURSOR hScreenCursor, hTrackCursor, hNotQuiescentCursor, hHourglass;
extern char *ScreenClassName; /* MDI childs class name */
extern char *MLBuf; /* message line buffer */
extern HFONT hEmacsFont; /* font used for display */
extern CellMetrics EmacsCM; /* cell metrics of that font */
#if GRINDERS != 0
extern HCURSOR GrinderCursor [GRINDERS];/* handles for the grinder animation */
extern int GrinderIndex;
#endif
extern char *MainHelpFile; /* Emac's help file name and useage flag */
extern BOOL MainHelpUsed;
extern char HelpEngineFile [NFILEN];/* user help file and useage flag */
extern BOOL ColorDisplay; /* TRUE if the display is color-capable */
#endif
/* input stream access functions */
void in_init (void);
BOOL in_room (int n);
BOOL in_check (void);
void in_put (int event);
int in_get (void);
/* Windows-implementation specific functions */
LONG EXPORT FAR PASCAL ScrWndProc (HWND hWnd, UINT wMsg, UINT wParam,
LONG lParam);
LONG EXPORT FAR PASCAL FrameWndProc (HWND hWnd, UINT wMsg, UINT wParam,
LONG lParam);
int FAR PASCAL GetInput (void);
int FAR PASCAL TakeANap (int t);
void FAR PASCAL GenerateMenuSeq (UINT ID);
KEYTAB * FAR PASCAL FindKeyBinding (void *Func);
void FAR PASCAL InitMenuPopup (HMENU hMenu, LONG lParam);
BOOL FAR PASCAL MenuCommand (UINT wParam, LONG lParam);
HMENU FAR PASCAL GetScreenMenuHandle (void);
BOOL FAR PASCAL EatKey (UINT MsgCode, UINT wParam, LONG lParam);
void FAR PASCAL MouseMessage (HWND hWnd, UINT wMsg, UINT wParam, LONG lParam);
void FAR PASCAL DropMessage (HWND hWnd, HANDLE hDrop);
void FAR PASCAL BuildCellMetrics (CellMetrics *cm, HFONT hFont);
void FAR PASCAL InvalidateCells (HWND hWnd, int leftcol, int toprow,
int rightcol, int bottomrow);
void FAR PASCAL MinimumClientSize (HWND hWnd, int NCols, int NRows,
int *Width, int *Height);
int FAR PASCAL DisplayableRows (HWND hWnd, int Height, CellMetrics *cm);
int FAR PASCAL DisplayableColumns (HWND hWnd, int Width, CellMetrics *cm);
void FAR PASCAL EmacsCaret (BOOL Show);
void FAR PASCAL MoveEmacsCaret (HWND hWnd, int col, int row);
void FAR PASCAL ShowEmacsCaret (BOOL Show);
void FAR PASCAL CellToClient (HWND hWnd, POINT Cell, LPPOINT Client);
void FAR PASCAL ClientToCell (HWND hWnd, POINT Client, LPPOINT Cell);
void FAR PASCAL GetMinMaxInfo (HWND hWnd, LPPOINT rgpt);
BOOL FAR PASCAL ScrReSize (HWND hWnd, UINT wParam, WORD cx, WORD cy);
void FAR PASCAL ScrPaint (HWND hWnd);
void FAR PASCAL MLPaint (void);
BOOL FAR PASCAL InMessageLine (void);
void FAR PASCAL ClipboardCleanup (void);
void FAR PASCAL ScrollMessage (HWND hWnd, UINT wMsg, WORD ScrlCode, int Pos);
void FAR PASCAL ScrollBars (void);
int FAR PASCAL SetWorkingDir (void);
void FAR PASCAL InitializeFarStorage (void);
void FAR PASCAL JettisonFarStorage (void);
HFONT FAR PASCAL SelectFont (HDC hDC, HFONT hFont);
BOOL FAR PASCAL PickEmacsFont (void);
void FAR PASCAL FontInit (void);