Listing 5: Ein Fenster verstecken und wieder anzeigen.

/* FensterVerstecken.c */

#define __USE_BASETYPE__

#include <proto/exec.h>
#include <proto/dos.h>
#include <proto/intuition.h>

struct IntuitionBase *IntuitionBase;
struct IntuitionIFace *IIntuition;

int main()
{
  if((IntuitionBase = (struct IntuitionBase *) IExec->OpenLibrary("intuition.library",50)))
  {
    if((IIntuition = (struct IntuitionIFace *) IExec->GetInterface((struct Library *)IntuitionBase,"main",1,NULL)))
    {
      struct Window *win;
      if((win = IIntuition->OpenWindowTags(NULL,
                           WA_Title,  "FensterVerstecken",
                           WA_Width,300,
                           WA_Height,100,
                           WA_DepthGadget,TRUE,
                           WA_Hidden, TRUE,  /* erzeugen aber nicht anzeigen */
                           TAG_DONE)))
      {
        for(;;)
        {
          const ULONG signal = IExec->Wait(SIGBREAKF_CTRL_C | SIGBREAKF_CTRL_E | SIGBREAKF_CTRL_F);
          if(signal == SIGBREAKF_CTRL_C) break;
          else if(signal == SIGBREAKF_CTRL_E) IIntuition->ShowWindow(win,IntuitionBase->ActiveWindow);
          else if(signal == SIGBREAKF_CTRL_F) IIntuition->HideWindow(win);
        }
      
        IIntuition->CloseWindow(win);
      }
      else IDOS->Printf("Fenster läst sich nicht erzeugen\n");

      IExec->DropInterface((struct Interface *)IIntuition);
    }
    else IDOS->Printf("kein main Interface in der intuition.library\n");

    IExec->CloseLibrary((struct Library *)IntuitionBase);
  }
  else IDOS->Printf("es fehlt intuition.library V50\n");

  return( 0 );
}