sterling@dasys1.UUCP (Sterling Brown) (02/21/89)
For the last couple of months I have been searching for a way to get
a SHELL up onto a screen other than the workbench screen. I even
considered rewriting the NEWCON: device so that it opens up its own
screen. I finally found a way, and BOY is it easy. I turns out that
any screen that has its Type member set to WBENCHSCREEN can be used
as an alternate workbench screen. HOW? By bringing the secondary
screen to the top, any program that opens its window to the Workbench
screen will open its window to the new screen. This includes
Shells, CLIs, Workbench programs and utilities, and Even Workbench
itself.
Just think of the possibilities of having workbench distribute its
windows across 2 screens, or 3 screens, or 4 screens,...
This VERY simple 'c' code will do nothing more than open a screen
and put a SHELL on it. After you run it, you can experiment with
the workbench windows. Remember, Only programs that open their
windows to the Workbench screen can share the alternate screens.
---------------------- C U T H E R E -------------------------
/* alternate WbenchScreen program written by Sterling Brown */
/* you can have a many of these as you want up */
#include "intuition/intuition.h"
struct GfxBase *GfxBase;
struct IntuitionBase *IntuitionBase; /* Base of Intuition library */
struct Screen *Screen;
struct ViewPort *ViewPort;
struct NewScreen NewScreen = {
0,0,640,200,2,
0,1,
HIRES,
WBENCHSCREEN,
NULL, /* Default intuition font */
"WorkBench Screen 2", /* Title */
NULL,
NULL
};
void main()
{
GfxBase = (struct GfxBase*) OpenLibrary("graphics.library",0);
if(GfxBase==NULL) exit(20);
IntuitionBase = (struct IntuitionBase *) OpenLibrary("intuition.library",0);
if(IntuitionBase == NULL)
{
CloseLibrary(GfxBase);
exit(20);
}
if((Screen=(struct Screen *)OpenScreen(&NewScreen))==NULL)
{
CloseLibrary(GfxBase);
CloseLibrary(IntuitionBase);
exit(20);
}
/* if you want you can change the colors here */
/* ViewPort = &(Screen->ViewPort); Get the view port pointer
SetRGB4(ViewPort,0,0,0,0); Set color 0 to black
SetRGB4(ViewPort,1,2,9,2); Set color 1 to Green
SetRGB4(ViewPort,2,12,12,0); Set color 2 to Yellow\z
*/
Execute("Newshell",0,0);
exit(0); /* leave the screen open and exit */
}jimm@amiga.UUCP (Jim Mackraz) (02/22/89)
In article <8747@dasys1.UUCP> sterling@dasys1.UUCP (Sterling Brown) writes:
) Just think of the possibilities of having workbench distribute its
) windows across 2 screens, or 3 screens, or 4 screens,...
We did, and you'll be fully supported in V1.4.
) This VERY simple 'c' code will do nothing more than open a screen
) and put a SHELL on it. After you run it, you can experiment with
) the workbench windows. Remember, Only programs that open their
) windows to the Workbench screen can share the alternate screens.
And remember, this will probably blow right up with V1.4, so don't burn
it into any commercial applications. As an interim toy, sure, go wild.
jimm
--
Jim Mackraz, I and I Computing "Like you said when we crawled down
{cbmvax,well,oliveb}!amiga!jimm from the trees: We're in transition."
- Gang of Four
Opinions are my own. Comments are not to be taken as Commodore official policy.