#ifndef CLASS_CHART
#define CLASS_CHART "MakeMDI_Chart"
// ==========================================================Purpose 
// CHART.H - MDI Chart window managment. 
// 
// MAKEMDI adaptation of Windows 3.1 SDK MAKEAPP system. 
// 
// MDI application design based on Chapter 7 of	 
// "Windows 3: A Developer's Guide" by Jeffrey Richter. 
// 
// Adaptation developed with permission of the author by  
// John F. Holliday, Technisoft Corporation 
// Telephone: (515) 472-9803, CompuServe: 71271,634 
//
// [DMM]	25-Nov-1992: Fixed crashing on exit
//			Also tabified file to tabsize of 4
//
//			David M. Miller, Business Visions, Inc.
//			Telephone: (212) 747-6118
//			CompuServe: 72676,327
//			internet: dmiller@hera.sbi.com
// ==========================================================Private 

// Window procedure 

LRESULT CALLBACK _export Chart_WndProc(HWND, UINT, WPARAM, LPARAM);


// Default message handler 

#define Chart_DefProc				DefMDIChildProc


// Instance data structure 

typedef struct tagCHART {
	HWND			hWnd;
	HWND			hWndPrevChild;
	HMENU			hMenu;
	HANDLE			hAccelTable;
	COLORREF		clrText;
	LPCSTR			lpszText;
}				CHART;


// Instance data pointer access functions 

#if defined(M_I86SM) | defined(M_I86MM)
#define Chart_GetPtr(hWnd)			   (CHART*)GetWindowWord((hWnd), 0)
#define Chart_SetPtr(hWnd, pchart)	   (CHART*)SetWindowWord((hWnd), 0, (WORD)(pchart))
#else
#define Chart_GetPtr(hWnd)			   (CHART*)GetWindowLong((hWnd), 0)
#define Chart_SetPtr(hWnd, pchart)	   (CHART*)SetWindowLong((hWnd), 0, (LONG)(pchart))
#endif

// Message handler functions 

BOOL			Chart_OnCreate(CHART *, CREATESTRUCT FAR *);
int				Chart_OnMouseActivate(CHART *, HWND, UINT, UINT);
void			Chart_OnMenuSelect(CHART *, HMENU, int, HMENU, UINT);
void			Chart_OnEnterIdle(CHART *, UINT, HWND);
BOOL			Chart_OnSetCursor(CHART *, HWND, UINT, UINT);
void			Chart_OnLButtonDown(CHART *, BOOL, int, int, UINT);
void			Chart_OnClose(CHART *);

void			Chart_OnMdiActivate(CHART *, BOOL, HWND, HWND);
void			Chart_OnDestroy(CHART *);
void			Chart_OnPaint(CHART *);
BOOL			Chart_OnEraseBkgnd(CHART *, HDC);
BOOL			Chart_OnQueryEndSession(CHART *);
void			Chart_OnEndSession(CHART *, BOOL);
void			Chart_OnCommand(CHART *, int, HWND, UINT);
void			Chart_OnPaintStatBar(CHART *, HDC, LPPAINTSTRUCT);
void			Chart_OnPaintMenuHelp(CHART *, LPPAINTSTRUCT);


// ===========================================================Public 

BOOL			Chart_Initialize(APP * papp);
void			Chart_Terminate(APP * papp);

HWND			Chart_CreateWindow(HWND hWndParent, int x, int y, int cx, int cy, BOOL fVisible, COLORREF clrText, LPCSTR lpszText);

// ==============================================================End 
#endif							// !CLASS_CHART
