[comp.sys.amiga] HELP!!! CloseWorkBench

mlelias@miavx1.acs.muohio.edu (Mike Elias (Mighty Amigo) Systems Analysis) (07/10/90)

	Hi all,

	I am a new C programmer using Lattice 5.04, and of course I have a
question.  I would like to be able to start a program via Icon without that
WBench window popping up.  To be more specific, I would like to close the
WorkBench Screen.  Using Abacus's _C for Advanced Programmers_, I was able
to write the source, compile and (b)link.  No problem, but nothing happens
when I run it.  I don't have any shell's running, or any other processes
which might write to the Screen, just the bare minimum, Intuition.  Regardless
of wether or not I can get the WBench to close, I would *still* like to lose
that &#%$^@!&$ window. :)

		Can anyone help?  BTW, I have included the source just in
case I goofed it.

Thanx
___________________________________________________________________________
# include <workbench/startup.h>
# include <workbench/workbench.h> /* don't think I need this, do I? */
# include <exec/types.h>
# include <intuition/intuition.h>

struct IntuitionBase *IntuitionBase;
struct Screen	     *FirstScreen;
struct Window	     *FirstWindow;
struct IntuiMessage  *message;


struct NewScreen NewScreenStructure = {
	0,0,	/* screen XY origin relative to View */
	640,200,	/* screen width and height */
	1,	/* screen depth (number of bitplanes) */
	0,1,	/* detail and block pens */
	HIRES,	/* display modes for this screen */
	CUSTOMSCREEN,	/* screen type */
	NULL,	/* pointer to default screen font */
	"Screen Test",	/* screen title */
	NULL,	/* first in list of custom screen gadgets */
	NULL	/* pointer to custom BitMap structure */
};

#define NEWSCREENSTRUCTURE NewScreenStructure

USHORT Palette[] = {
	0x0356,	/* color #0 */
	0x0FFF	/* color #1 */
#define PaletteColorCount 2
};

#define PALETTE Palette

struct NewWindow NewWindowStructure1 = {
	160,50,	/* window XY origin relative to TopLeft of screen */
	320,150,	/* window width and height */
	0,1,	/* detail and block pens */
	CLOSEWINDOW,	/* IDCMP flags */
	WINDOWSIZING+WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE+SMART_REFRESH,	/* other window flags */
	NULL,	/* first gadget in gadget list */
	NULL,	/* custom CHECKMARK imagery */
	"Test Custom-Screen",	/* window title */
	NULL,	/* custom screen pointer */
	NULL,	/* custom bitmap */
	100,50,	/* minimum width and height */
	-1,-1,	/* maximum width and height */
	CUSTOMSCREEN	/* destination screen type */
};


/* end of PowerWindows source generation */

void main()
{
	Open_All();
	
	CloseWorkBench();
	Delay(360L);
	OpenWorkBench();
	Delay(180L);

	Close_All();
	exit(TRUE);
}

Open_All()
{
	LONG		 OpenLibrary();
	struct Window	*OpenWindow();
	struct Screen	*OpenScreen();
	
	if(!(IntuitionBase = (struct IntuitionBase *)
	OpenLibrary("intuition.library", 0)))
	{
		printf("Cannot open Intuition Library.\n");
		exit(FALSE);
	}
	
	if(!(FirstScreen = (struct Screen *)
	OpenScreen(&NewScreenStructure)))
	{
		printf("Cannot open screen.\n");
		Close_All();
		exit(FALSE);
	}
	
	NewWindowStructure1.Screen = FirstScreen;
	
	if(!(FirstWindow = (struct Window *)
	OpenWindow(&NewWindowStructure1)))
	{
		printf("Cannot open window.\n");
		Close_All();
		exit(FALSE);
	}

	return(NULL);

}

Close_All()
{
	if(FirstWindow) CloseWindow(FirstWindow);
	if(FirstScreen) CloseScreen(FirstScreen);
	if(IntuitionBase) CloseLibrary(IntuitionBase);
	
	return(NULL);
}
___________________________________________________________________________


-- 
---------------------------------------------------------------------------
When things are blackest, I just tell     | Mlelias@Miavx1.Bitnet
myself 'cheer' up, things could be worse!'| Oxford, Oh
And sure enough, they get worse!          | Miami University
------------------------------------------| Mike Elias
---------------------------------------------------------------------------

cmcmanis@stpeter.Eng.Sun.COM (Chuck McManis) (07/11/90)

In article <1699.26992863@miavx1.acs.muohio.edu> (Mike Elias (Mighty Amigo) Systems Analysis) writes:
> ... Regardless of wether[sic] or not I can get the WBench to close, I 
> would *still* like to lose that &#%$^@!&$ window. :)

You must close all windows on the Workbench and the console window you are
swearing about above is the culprit I suspect. You need a recompiled 
_main.o which doesn't open the window for you. Go into the lc/Sources
directory where the source to _main.c lives, recompile it with the 
-DTINY flag option and then copy the .o file to lib: then you can
blink with 
Blink Lib:_main.o+your.o to test lib lib:lc.lib+lib:amiga.lib

And that should do the trick for you.

--
--Chuck McManis						    Sun Microsystems
uucp: {anywhere}!sun!cmcmanis   BIX: <none>   Internet: cmcmanis@Eng.Sun.COM
These opinions are my own and no one elses, but you knew that didn't you.
"I tell you this parrot is bleeding deceased!"