/* Beispiel fr einen einfachen Windowhandler unter MAGIC. Das Programm ”ffnet drei Fenster und macht sonst nichts. Orginalversion in Pure Pascal von Peter Hellinger. Portierung nach C von Dirk Stadler. */ #include #include #include #define SMALLER 0x4000 /* MULTITOS >= 1.08 */ /* Globale Variablen */ int FirstWin, SecondWin, ThirdWin; int ProgEnde; /* Prototypen */ int OpenWin(char *, char *, int, int, int, int, int); /* Der Windowhandler: Im Prinzip wird alles von MAGIC geregelt. Man muž nur die Aktionen an MAGIC in der Variablen 'action' zruckmelden. */ void WinHandler(PtrWinPara w) { w->action = 0; switch (w->message) { case WinRedraw: break; case WinTopped: w->action = wTopped; break; case WinClosed: w->action = wClose; ProgEnde--; break; case WinFulled: w->action = wFulled; break; case WinSized: w->action = wSized; break; case WinMoved: w->action = wMoved; break; case WinBottomed: w->action = wBottom; break; case WinIconify: SetIcontext(w->window, "SCHRUMPF"); w->action = wIconify; break; case WinUniconify: w->action = wUniconify; } } /* WinHandler */ /* Die Routine ”ffnet ein Texfenster mit allem was dazugeh”rt. */ int OpenWin( char *wname, char *winfo, int xPos, int yPos, int Breite, int Hoehe, int wrap ) { OBJECT *x; BITSET f; f = MOVER | NAME | CLOSER | FULLER | INFO | SIZER | SMALLER; x = NULL; ProgEnde++; return(OpenTextwindow ( WinHandler, f, 0, xPos, yPos, Breite, Hoehe, 0, 0, 0, 0, /* Offsets */ 0, 1, /* Farben */ 100, 10, /* Font,Gr”že */ 0, /* Effekte */ wrap, /* Umbruch */ wname, /* Titel */ winfo, /* Infozeile */ x )); /* Ressource */ } /* OpenWin */ /* Das Hauptprogramm ”ffnet drei Fenster und ruft dann in einer Endlosschleife solange den Dispatcher auf bis alle Fenster geschlossen sind. */ void main() { char name[30]; ApplInit(); MouseOn(); MouseArrow(); ProgEnde = 0; sprintf(name,"%3d <- Applikationsnummer!",ApplIdent); FirstWin = OpenWin(" Hello World 1 ", name, 100, 100, 250, 150, 50); WriteLine(FirstWin, "Hello World"); SecondWin = OpenWin(" Hello World 2 ", name, 400, 300, 200, 100, 50); WriteLine(SecondWin, "Hello World"); ThirdWin = OpenWin(" Hello World 3 ", name, 200, 150, 200, 100, 50); WriteLine (ThirdWin, "Hello World"); while (ProgEnde >= 1) CentralDispatcher(); ApplTerm(0); } /* main */