/*static char *SCCSID = "@(#)hanoi.h    6.10 92/03/03";*/
/*==============================================================*\
 *								*
 *  HANOI.H - Sample PM application hanoi header file		*
 *	Created 1989, 1991 IBM Corp.				*
 *								*
 *--------------------------------------------------------------*
 *								*
 *  This header file contains the application wide constants	*
 *  and structure definitions.					*
 *								*
\*==============================================================*/

/*--------------------------------------------------------------*\
 * Resource IDs							*
\*--------------------------------------------------------------*/
#define ID_RESOURCE    1
#define IDR_BITMAP     2
#define IDC_BITMAP     3

/*--------------------------------------------------------------*\
 *  Menu item IDs						*
\*--------------------------------------------------------------*/
#define IDM_START  (WM_USER+0)
#define IDM_STOP   (WM_USER+1)
#define IDM_SET	   (WM_USER+2)
#define IDM_DONE   (WM_USER+3) /* Message posted when thread terminates */
#define IDM_ON	   (WM_USER+4)
#define IDM_OFF	   (WM_USER+5)

/*--------------------------------------------------------------*\
 *  Message item IDs						*
\*--------------------------------------------------------------*/
#define IDD_SETCOUNT			       1
#define IDD_ENTRYFLD			       2
#define IDD_MSGBOX			       3
#define IDD_PRODUCTINFO			       4
#define IDD_HELP			       5

#define IDM_HELPHELPFORHELP		    9100
#define IDM_HELPEXTENDED		    9200
#define IDM_HELPKEYS			    9300
#define IDM_HELPINDEX			    9400
#define IDM_HELPPRODUCTINFO		    9600

/*--------------------------------------------------------------*\
 *  Help table and subtables					*
\*--------------------------------------------------------------*/
#define HANOI_HELP_TABLE		    1000

/*--------------------------------------------------------------*\
 *  Main window help panels					*
\*--------------------------------------------------------------*/
#define SUBTABLE_MAIN			    2000
#define PANEL_MAIN			    2100
#define PANEL_HELP			    2910
#define PANEL_HELPHELPFORHELP		    2920
#define PANEL_HELPEXTENDED		    2930
#define PANEL_HELPKEYS			    2940
#define PANEL_HELPINDEX			    2950
#define PANEL_HELPPRODUCTINFO		    2960
#define PANEL_KEYSHELP			    2970

#define PANEL_HELPSTART			    2980
#define PANEL_HELPSTOP			    2981
#define PANEL_HELPSET			    2982
#define PANEL_HELPON			    2983
#define PANEL_HELPOFF			    2984

/*--------------------------------------------------------------*\
 *  Enter text dialog help subtable				*
\*--------------------------------------------------------------*/
#define SUBTABLE_PRODUCTINFODLG		    3000
#define PANEL_PRODUCTINFODLG		    3100
#define PANEL_PRODUCTINFO_OK		    3110

/*--------------------------------------------------------------*\
 *  Stringtable ids						*
\*--------------------------------------------------------------*/
#define IDS_TITLE			     101
#define IDS_UNTITLED			     102
#define IDS_APPNAME			     103
#define IDS_HELPLIBRARYNAME		     104
#define IDS_HELPWINDOWTITLE		     105
#define IDS_OBJECTCLASS			     106

/*--------------------------------------------------------------*\
 *  Messagetable ids						*
\*--------------------------------------------------------------*/
#define IDMSG_INITFAILED		     301
#define IDMSG_MAINWINCREATEFAILED	     302
#define IDMSG_DISKNUMBERERROR		     303
#define IDMSG_CANNOTLOADEXITLIST	     304
#define IDMSG_CANNOTLOADSTRING		     305
#define IDMSG_HELPLOADERROR		     306
#define IDMSG_HELPDISPLAYERROR		     307

/*--------------------------------------------------------------*\
 *  Other constants						*
\*--------------------------------------------------------------*/
#define MAXDISKCNT	   16	 /* Maximum # of disks allowable */
#define BASEXOFFSET	   10	 /* X offset for platform base	 */
#define BASEYOFFSET	   10	 /* Y offset for platform base	 */
#define BASETHICK	   10	 /* Base thickness		 */
#define BASELEN		  300	 /* Base width			 */
#define POSTOFFSET	   62	 /* First post offset from edge	 */
#define POSTSPACE	  100	 /* Distance between posts	 */
#define POSTWIDTH	    5	 /* Width of each post		 */
#define POSTHALF	    2	 /* 1/2 width for centering	 */
#define POSTEXTRAHT	   25	 /* Post height above top disk	 */
#define DISKTHICK	    3	 /* Thickness of each disk	 */
#define DISKSPACE	  (DISKTHICK+1)	    /* Thickness + space */
#define MINDISKWIDTH	   11	 /* Width of the smallest disk	 */
#define MAXDISKWIDTH	   91	 /* Width of the thickest disk	 */
#define BOTDISKYPOS	   (BASEYOFFSET+BASETHICK+DISKSPACE-DISKTHICK)
#define STACK		 8192	 /* Stack size for thread	 */
#define fDRAW		    1	 /* Indicate draw to DrawDisk()	 */
#define fERASE		    0	 /* Indicate erase		 */
#define RETURN_ERROR	    1	 /* Error return from procedure	 */
#define DEFAULTSIZE	    5	 /* Default number of disks	 */
#define MSGBUFSIZE	   25	 /* Space needed for sprintf msg */
#define RETURN_SUCCESS	    0	 /* successful return in DosExit */
#define RETURN_ERROR	    1	 /* error return in DosExit	 */
#define BEEP_WARN_FREQ	    60	 /* frequency of warning beep	 */
#define BEEP_WARN_DUR	   100	 /* duration of warning beep	 */
#define MESSAGELEN	    50	 /* maximum length for messages	 */
#define MAX_DIGITS	    5
#define THREADSTACKSIZE	  8192L
#define SEM_TIMEOUT	 10000L
#define HELPLIBRARYNAMELEN  20
#define VERT_POS	    15	 /* from top to display text info*/
#define HORZ_POS	    50
#define BUFF_SIZE	   100
#define ONCE		   while(0)
#define DELETE_WIDTH	   50

/*--------------------------------------------------------------*\
 *  Standard Dialog box ids					*
\*--------------------------------------------------------------*/
#define OBJECTID	1002

/*--------------------------------------------------------------*\
 *  Macro constants						*
\*--------------------------------------------------------------*/
#define DrawRect(x1,y1,x2,y2,color)  ptl.x = (LONG) (x1);	      \
				     ptl.y = (LONG) (y1);	      \
				     GpiSetCurrentPosition(hps,&ptl); \
				     ptl.x = (LONG) (x2);	      \
				     ptl.y = (LONG) (y2);	      \
				     GpiSetColor(hps,color);	      \
				     GpiBox(hps,DRO_FILL,&ptl,0L,0L);

/*--------------------------------------------------------------*\
 *  Ids of messages used between threads			*
\*--------------------------------------------------------------*/
#define TM_THREADINITFAILED	      WM_USER+300

