home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CICA 1992 November
/
CICA_MS_Windows_CD-ROM_Walnut_Creek_November_1992.iso
/
win3
/
programr
/
faultw.zoo
/
FAULT.H
< prev
next >
Wrap
C/C++ Source or Header
|
1992-03-30
|
2KB
|
78 lines
/*
* FAULT.H
*
* Definitions and function prototypes for Fault.
*
* Copyright(c) Microsoft Corp. 1992 All Rights Reserved
*/
/*
* Resource idetifiers and menu ID values.
*/
#define IDR_ICON 1
#define IDR_MENU 1
#define IDM_EXDIVIDEBYZERO 100
#define IDM_EXGPFAULT 101
/*
* Structure holding the "global" variables. Creating a structure with
* has several advantages over separately declaring each field as a
* global:
* 1. Keep source files clean.
* 2. Eliminates need for many "extern" declarations.
* 3. A single pointer to this structure can be passed throughout
* the application, hiding the fact that it's global.
* 4. Allows the variables to be allocated dynamically or from
* different memory than the application's stack.
* 5. Any reference to these variables will have a pointer or
* structure dereference, which points to where the variable
* actually is defined. Separate globals are not distinguishable
* from locals, making code harder to read.
*/
typedef struct
{
HWND hWnd; //Top-level application window.
HANDLE hInst; //Application instance handle.
FARPROC pfnInt; //GP Fault Handler
} GLOBALS;
typedef GLOBALS FAR * LPGLOBALS;
//External:
extern LPGLOBALS pGlob;
extern CATCHBUF cbEx;
extern LPCATCHBUF pcbEx;
extern WORD wException;
/*
* Flag values to store in the wException global variable that tells
* the handler what type of exceptions we specifically want.
*/
#define EXCEPTION_NONE 0x0000 //Turns handling off.
#define EXCEPTION_DIVIDEBYZERO 0x0001
#define EXCEPTION_GPFAULT 0x0002
#define EXCEPTION_ALL 0x0003 //Looks for all exceptions above.
/*
* Function prototypes.
*/
//FAULT.C
LONG FAR PASCAL FaultWndProc(HWND, UINT, UINT, LONG);
BOOL FAR PASCAL FPerformCalculation(void);
HANDLE FAR PASCAL HAllocateNumbers(void);
//HANDLER.ASM
void FAR PASCAL ExceptionHandler(void);