Content Supported by Sourcelens Consulting

*****************************************************
* Main Program for Solution.APP
* Sample Application
*
* Copyright (c) 1990 - 1996 Microsoft Corp.
* 1 Microsoft Way
* Redmond, WA 98052
*
******************************************************

* Change the default directory if run from the Project manager
* and solution.scx cannot be found

IF !FILE('solution.scx')
	cCurrentProcedure = SYS(16,1)
	nPathStart = AT(":",cCurrentProcedure)- 1
	nLenOfPath = RAT("\", cCurrentProcedure) - (nPathStart)
 	SET DEFAULT TO (SUBSTR(cCurrentProcedure, nPathStart, nLenofPath))
ENDIF

* Establish a global error handler.
* The error events associated with objects
* take precedence over ON ERROR routines.

cOldError = ON("ERROR")
ON ERROR DO SolutionErrHandle

* Run the main form and establish the event loop

DO FORM solution
READ EVENTS

* Reset the global error handler
ON ERROR &cOldError


PROCEDURE SolutionErrHandle
LOCAL lnChoice
	#DEFINE ERR_LOC "Error: "
	#DEFINE FILEINUSE_LOC "A form cannot simultaneously be open in design mode and running."
	#DEFINE FILEREADONLY_LOC "One of the necessary files is marked as read-only." + CHR(13) + "Please make sure you have read and write access to the file."

	DO CASE
		CASE ERROR() = 3 && File is in use
			=MESSAGEBOX( ERR_LOC + MESSAGE() + CHR(13) + ;
				FILEINUSE_LOC, 0 + 48)
				
		CASE ERROR() = 1718 && File is read-only
			=MESSAGEBOX( ERR_LOC + MESSAGE() + CHR(13) + ;
				 FILEREADONLY_LOC, 0 + 48)
			RETRY
		CASE ERROR() = 1881 && Trying to load DE of solution.scx when table is already open
			CLOSE DATA ALL
			DO FORM solution
		OTHERWISE
			lnChoice = MESSAGEBOX(ERR_LOC + ALLTRIM(STR(ERROR())) + CHR(13) + ;
				MESSAGE(), 1 + 48)
			IF lnChoice = 2 && Cancel
				ON ERROR &cOldError
				CLEAR EVENTS
				CLOSE ALL
				RELEASE ALL
				CLEAR ALL
			ENDIF	
	ENDCASE
ENDPROC

* Project resolution markers for API functions

Procedure MAINHWND
Procedure  _WHTOHWND
Procedure  _WONTOP
Procedure  GetFileVersion