home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_disks
/
001-099
/
ff001.lzh
/
hello
/
hello.c
< prev
Wrap
C/C++ Source or Header
|
1985-12-25
|
5KB
|
150 lines
/*
* Article 27 of net.micro.amiga:
* ion: version B 2.10.2 9/17/84 chuqui version 1.9 3/12/85; site unisoft.UUCP
* Posting-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site topaz.RUTGERS.EDU
* Path: unisoft!dual!lll-crg!seismo!columbia!topaz!eric
* From: eric@topaz.RUTGERS.EDU (Eric Lavitsky)
* Newsgroups: net.micro.amiga
* Subject: Hello World
* Message-ID: <3529@topaz.RUTGERS.EDU>
* Date: 4 Sep 85 20:12:41 GMT
* Date-Received: 5 Sep 85 16:38:36 GMT
* Organization: Rutgers Univ., New Brunswick, N.J.
* Lines: 145
*
* Hi,
*
* Well here is the first ever Amiga source to be posted on the net. The
* following code was taken from the Amiga User Interface Manual. This
* program uses the Intuition user interface under V28 of the operating
* system. Intuition controls all the window sizing and dragging for the
* application, though you can tell Intuition to tell your program about
* certain events (like resizing) so you can take your own action. The
* code is not ultimately clean - all the structures could be initialized
* like the first one etc. I kept most of the original comments from the
* example and added one or two of my own.
*
* The program opens its own screen (320x200) and creates a window that
* can be dragged, sized, pushed up or down and closed. The screen can also
* be pushed down or popped up and be pulled down to reveal the screen below
* it (one of my favorite features!)
*
* Enjoy!
*
*/
/***************************************************************************
*
* "Hello World"
*
**************************************************************************/
#include <exec/types.h>
#include <intuition/intuition.h>
#include <intuition/intuitionbase.h>
struct IntuitionBase *IntuitionBase;
struct GfxBase *GfxBase;
#define INTUITION_REV 28 /* You must be sure this is correct */
#define GRAPHICS_REV 28
/* This font declaration will be used for our new screen */
struct TextAttr MyFont =
{
"topaz.font", /* Font Name *
TOPAZ_SIXTY, /* Font Height */
FS_NORMAL, /* Style */
FPF_ROMFONT /* Preferences */
};
/* This is the declaration of a pre-initialized NewScreen data block.
* It often requires less work, and often uses less code space, to
* pre-initialize data structures in this fashion.
*/
struct NewScreen NewScreen =
{
0, /* the LeftEdge should be equal to zero */
0, /* TopEdge */
320, /* Width (lo-resolution) */
200, /* Height (non-interlace) */
2, /* Depth (16 colors will be available) */
0, 1, /* the DetailPen and BlockPen specifications */
NULL, /* no special display modes */
CUSTOMSCREEN, /* the Screen Type */
&MyFont, /* Use my own font */
"My Own Screen", /* this declaration is compiled as a text pointer */
NULL, /* no special Screen Gadgets */
NULL /* no special Custom BitMap */
};
main()
{
struct Screen *Screen;
struct NewWindow NewWindow;
struct Window *Window;
/* Open the Intuition library. The result returned by this call is
* used to connect your program to the actual Intuition routines
* in ROM. If the result of this call is zero, something is wrong
* and the Intuition you requested is not available, so your program
* should exit immediately
*/
IntuitionBase = (struct IntuitionBase *)
OpenLibrary("intuition.library",INTUITION_REV);
if(IntuitionBase == NULL)
exit(FALSE);
GfxBase = (struct GfxBase *) OpenLibrary("graphics.library",GRAPHICS_REV);
if(GfxBase == NULL)
exit(FALSE);
if((Screen = (struct Screen *) OpenScreen(&NewScreen)) == NULL)
exit(FALSE);
/* Initialize the NewWindow structure for the call to OpenWindow() */
NewWindow.LeftEdge = 20;
NewWindow.TopEdge = 20;
NewWindow.Width = 300;
NewWindow.Height = 100;
NewWindow.DetailPen = 0;
NewWindow.BlockPen = 1;
NewWindow.Title = "A Simple Window";
NewWindow.Flags = WINDOWCLOSE | SMART_REFRESH | ACTIVATE
| WINDOWSIZING | WINDOWDRAG | WINDOWDEPTH;
NewWindow.IDCMPFlags = CLOSEWINDOW; /* Tell us about CLOSEWINDOW events */
NewWindow.Type = CUSTOMSCREEN;
NewWindow.FirstGadget = NULL;
NewWindow.CheckMark = NULL;
NewWindow.Screen = Screen;
NewWindow.BitMap = NULL;
NewWindow.MinWidth = 100;
NewWindow.MinHeight = 25;
NewWindow.MaxWidth = 32767;
NewWindow.MaxHeight = 32767;
/* Try to open the window. Like the call to OpenLibrary(), if
* the OpenWindow call is successful, it returns a pointer to
* the structure for your new window. If the OpenWindow() call
* fails, it returns a zero.
*/
if(( Window = (struct Window *) OpenWindow(&NewWindow)) == NULL)
exit(FALSE);
Move(Window->RPort,20,20);
Text(Window->RPort,"Hello World",11);
for(;;)
{
Wait(1 << Window->UserPort->mp_SigBit);
CloseWindow(Window); /* Close the Window */
CloseScreen(Screen); /* Close the Screen */
exit(TRUE); /* Exit */
}
}