Programmierung Apple Macintosh |
Dieses Rahmenprogramm stellt ein Fenster auf dem Bildschirm dar, indem ein Gruß an eine Weltstadt dargestellt wird. Da das Programm der Übersicht halber kein Menü hat, wird das Ende durch Schließen des Fensters erreicht.
Im ResEdit wurde eine WIND-Ressource mit der ID 128 erzeugt.
/* (C) Arnold Willemer 2001 */ #include <Dialogs.h> #include <Fonts.h> #include <MacWindows.h> #include <Menus.h> #include <QuickDraw.h> #include <TextEdit.h> #define kMoveToFront (WindowPtr)-1L #define sleepValue 32767 enum { kBaseResID = 128 }; // ------------- globale Variablen ------------- Boolean gDone; // Flag, um das Programm zu beenden static void Initialize(void) // Initialisiere die Toolboxen des MacOS. // Das ist bei jedem Programm aehnlich. { InitGraf(&qd.thePort); InitFonts(); InitWindows(); InitMenus(); TEInit(); InitDialogs(nil); InitCursor(); } static void WindowInit( void ) // Hier wird ein Fenster erzeugt mit einer Hello-Botschaft // Das Fenster wird im ResEdit mit der ID 128 definiert. { WindowPtr window; window = GetNewWindow(kBaseResID, nil, kMoveToFront); if (window == nil) { // kein Fenster erzeugbar, schade! SysBeep(10); /* noergel akkustisch */ ExitToShell(); /* Abgang auf franzoesisch */ } ShowWindow(window); SetPort(window); /* Wir schreiben etwas in das Fenster */ MoveTo(30,50); DrawString("\pHallo Norgaardholz"); } // --------------- Events Anfang ------------- static void DoEvent( EventRecord *eventPtr ) // Behandlung der eingetroffenen Events { short thePart; WindowPtr window; switch (eventPtr->what) { case mouseDown: // in welchem Fensterbereich ist er niedergegangen? thePart = FindWindow(eventPtr->where, &window); switch (thePart) { case inDrag: // Verschiebebalken DragWindow(window, eventPtr->where, &qd.screenBits.bounds); break; case inGoAway: // Schlie§box gDone = true; break; } break; } } static void MainEventLoop( void ) // Durchlaufe diese Endlosschleife und verteile die Events // an die behandelnden Routinen { EventRecord event; gDone = false; // gDone ist die globale Variable zur Steuerung des Endes while ( gDone == false ) { if (WaitNextEvent( everyEvent, &event, sleepValue, nil) ) { DoEvent( &event); } } } // --------------- Events Ende ------------- void main(void) { Initialize(); WindowInit(); MainEventLoop(); }
Homepage | (C) Copyright 1999 Arnold Willemer |