von Michael Christoph
Obwohl sich beide Libraries kaum verändert haben, gibt es doch einige Kleinigkeiten, die man bei der Programmierung unter AmigaOS 4 beachten sollte. Informationen zur Handhabung der Interfaces und die entsprechenden Basis-Zeigernamen finden Sie im Kasten »Die Reaction-Basiszeiger«. Die mit Kickstart 2.0 eingeführte gadtools.library erleichterte die Erstellung von Gadgets und Menüs stark. Sie brachte viele neue Gadget-Typen mit und wurde mit der Workbench in »Amiga OS 3.5« größtenteils durch Reaction abgelöst. Das Erzeugen der Menüs wurde in die Window-Klasse verlagert damit kann die NewMenu-Struktur direkt übergeben werden. Dadurch haben die Gadtools unter OS4 praktisch keine Bedeutung mehr und sollten nicht mehr verwendet werden. Unter Reaction stehen alle bekannten Gadget-Typen zur Verfügung dazu kommen einige Neuerungen. Auf Grund der Änderungen ist die gadtools.library auch nicht im AutoInit-Code vorhanden (Stand SDK 51.3) und muss daher selber geöffnet und geschlossen werden. Die Reaction-Classes hingegen werden automatisch geöffnet, wenn die Linkeroption -l raauto angegeben wird. Die Option ra steht dabei für Reaction. Zwar wird MUI als OS4-native-PPC-Version geliefert, trotzdem ist es als AddOne zu betrachten. Die offizielle Oberfläche besteht aus Reaction-Gadgets, wie es auch die Systemprogramme (Prefs-Einsteller etc.) recht deutlich zeigen. Daher gibt es hierfür (bisher) auch keine AutoInit-Library. Reaction
Schritt für Schritt Paralell verhält es sich mit dem Anlegen des Fensterobjekts. Übergeben
werden können die meisten der WA-Tags von OpenWindow und zusätzlich
die WINDOW_xxx-Defines aus dem Include classes/window.h (Listing
2). Benötigt wird noch ein Layout-Objekt, das sich automatisch
um Größenänderungen kümmert und diese an die Gadgets
weitergibt (s. Listing 3). Mit AmigaOS 4 sind die Reaction-Gadgets auch BubbleHelp-fähig geworden.
Das heißt, wird die Maus über ein Gadget bewegt, wird ein Hilfetext
angezeigt. Dabei übernimmt das Betriebssystem wieder die ganze Arbeit.
Man muss lediglich die einzelnen Texte hinterlegen. Dazu dient die Struktur
HintInfo zu finden im Include classes/ Über den Aufruf WINDOW_GadgetHelp, FALSE wird sie deaktiviert und nicht weiter angezeigt. Der Wert TRUE schaltet das BubbleHelp an. Zur Kontrolle von BubbleHelp wird das Beispielprogramm noch um eine Checkbox erweitert. Damit lässt sich die Hilfe wie in Listing 7 ein- und ausschalten. Nach diesen Vorbereitungen folgt im Programm eine Nachrichtenschleife, die sich um die einzelnen Messages des Gadgets, des Fensters und des Menüs kümmert. Zuvor muss allerdings noch das Fenster angezeigt werden, da es bisher lediglich unsichtbar erzeugt wurde. Dazu wird das Makro RA_OpenWindow benutzt. Da es sich um ein Makro handelt, darf hier kein Basiszeiger vorangestellt werden. Analog gehen Sie bei RA_HandleInput und RA_CloseWindow wie in Listing 8 vor. Nicht vergessen werden darf, am Programmende alle erzeugten Objekte auch wieder freizugeben. Das ist allerdings recht einfach, da die DisposeObject()-Funktion auf das Fenster angewendet, auch alle darin enthaltenen Objekte mit vernichtet: IIntuition->DisposeObject(gb_WindowObj); Versehen mit den notwendigen Includes und der main-Funktion ist das vollständige Beispiel in der Datei "ReactionEx.c" zu finden. Das Beispielprogramm und den kompletten Quelltext finden Sie auf der CD zu dieser Ausgabe im Verzeichnis »Amiga Magazin« und da in der Schublade »OS4-Programmierung«. Format der .res-Dateien bisher in der Praxis gescheitert. In der nächsten Ausgabe geht`s dann richtig unter die Oberfläche von AmigaOS 4. Sie lesen dann, wie ppc-native Libraries und Devices programmiert werden und wie man diese einfach mit einem 68k-Interface versehen kann, falls sie auch von alten Anwendungen noch benutzt werden sollen Reactor
problematisch
Ein Problem stellt dabei die von Reactor erzeugte Objektdatei dar. Diese liegt im 68k-Format vor und kann nicht vom gcc zum restlichen im ppc-Format vorliegenden Source hinzugelinkt werden. Mit Hilfe von »vlink« (Linker von vbcc) sollte es zwar theoretisch möglich sein, funktioniert aber in der Praxis nicht immer. Und auch ein Konverter von Resourcedatei nach Sourcecode ist auf Grund mangelnder Informationen über das Format der .res-Dateien bisher in der Praxis gescheitert. Wer also Programme dieser Art nach PPC portieren möchte, muss viel Handarbeit investieren, um alle Elemente der Oberfläche mittels NewObject() direkt anzulegen. Wer sich davon aber nicht abschrecken lässt, findet im Kasten »Ressource-Daten anpassen« ein paar Tipps, die aber auch beim kompletten Neuschreiben hilfreich sind. In der nächsten Ausgabe geht`s dann richtig unter die Oberfläche von AmigaOS 4. Sie lesen dann, wie ppc-native Libraries und Devices programmiert werden und wie man diese einfach mit einem 68k-Interface versehen kann, falls sie auch von alten Anwendungen noch benutzt werden sollen. lb Literatur:
|
|
Download: | enthält: |
---|---|
ReactionEx.c : Reaction-GUI mit BubbleHelp |
|
os4prog-9-reaction-src.lha, 42.541 bytes |
Kommentare, Fragen, Korrekturen und Kritik bitte an Webmaster
AMIGA schicken.
Zuletzt aktualisiert am 23. Juli 2005, Michael Christoph.