Die RCT-Library Version 1.5 Die RCT-Library enthält Funktionen zum Laden und Verwalten der mit R.C.T. erstellten Benutzeroberfläche. Sie ist komplett reentrant und enthält außerdem einen sehr komfortablen File-Requester und einen einfach aufrufbaren System-Alarm-Requester. NAME rctload SYNOPSIS rctadress = rctload( pfad) A0 APTR rctadress; char *pfad; ERKLÄRUNG Lädt die im String angegebene R.C.T.-Datei in den Speicher und liefert deren Adresse. Im String sollte nur der Dateiname stehen, da sich die Datei, bei ganzen Pfadangaben immer im betreffenden Pfad befinden muß. Es ist vielmehr sinnvoller, nur den Dateinamen anzugeben, und bevor das Programm gestartet wird, mit "CD" einen Pfad zu legen. Das Pfadproblem ist nur dann vorhanden, wenn ein Programm aus dem CLI gestartet wird. Startet man ein Programm von der Workbench, wird der aktuelle Pfad automatisch auf den gelegt, von dem aus das Programm gestartet wird. ÄNDERUNGEN Kann die angegebene Datei nicht gefunden werden, wird versucht, diese von Laufwerk "RCT:" zu laden. Dies bedeutet, daß Sie ein Verzeichnis anlegen können in das Sie alle RCT-Dateien kopieren und am besten in der Startup-Sequence das betreffende Verzeichnis mit "ASSIGN RCT: Verzeichnis" anmelden sollten. In den Requester-Flags wird das Flag NOISYREQ generell gesetzt. Dadurch ist es möglich auch RAWKEY-Codes bei aktivem Requester zu empfangen. Man muss zum Empfangen allerdings die Message-Funktion waitall() verwenden. Mit reqwait werden nur GADGETDOWN, GADGETUP und MOUSEBUTTON Messages geliefert. RÜCKGABEN Zurückgeliefert wird eine Adresse auf die geladenen Datei, die jeder anderen RCT-Library-Funktion, die aufgerufen wird, übergeben werden muß. SIEHE rctfree BUGS Fehler mit DISKFONTS. Wird ein gewünschter Diskfont nicht gefunden, wird als default immer der TOPAZ 8 Font genommen. ---------------------------------------------------------------- NAME rctfree SYNOPSIS Boolean = rctfree( rctadress) A0 APTR rctadress; ERKLÄRUNG Gibt den durch die Funktion rctload() reservierten Speicherplatz wieder frei. Dies sollte am Ende jedes Programmes oder wenn eine andere RCT-Datei geladen wird, gemacht werden. Wurde die Funktion ausgeführt, führt jeder weitere Zugriff mit den RCT-Library-Funktionen auf die freigegebene RCT-Datei zu einem Systemabsturz. RÜCKGABEN Kann ignoriert werden. ---------------------------------------------------------------- NAME rctaddr SYNOPSIS addr = rctaddr( rctadress, art, id) A0 D0 D1 struct Requester *addr; oder struct Menu *addr; APTR rctadress; SHORT art; SHORT id; ERKLÄRUNG Ermittelt die Adresse von Requester oder Menüleisten. Die Funktion muß vor dem Anzeigen von Requester oder Setzen von Menüleisten ausgeführt werden. Je nach Art wird die Speicheradresse eines Requesters (art = 0) oder die Speicheradresse einer Menüleiste (art > 0) zurückgeliefert. Die id der Objekte wird beim Speichern der RCT-Datei in einer Include-Datei abgelegt. Die Endung des Dateinamens unterscheidet sich je nach Programmierspracheneinstellung im R.C.T. Ist die der Funktion übergebene id zu groß, wird NULL zurückgeliefert. RÜCKGABE Ist art gleich 0 wird die Adresse des durch id definierten Requester und bei art größer 0 die Adresse der betreffenden Menüleiste zurückgeliefert. ---------------------------------------------------------------- NAME reqcenter SYNOPSIS Boolean = reqcenter( rctadress, requester, window) A0 A1 A2 APRT rctadress; struct Requester *requester; struct Window *window; ERKLÄRUNG Zentriert den angegebenen Requester innerhalb der Ausmaße des angegebenen Windows. Ist der Requester bereits angezeigt, hat dies keine Auswirkung auf die Position des Requesters. Erst bei erneutem Anzeigen wird die Position neu gesetzt. Diese Funktion sollte deshalb vor dem Zeichnen des Requesters aufgerufen werden. RÜCKGABE Bei Erfolg TRUE andernfalls FALSE wobei dann eine der drei anzugebenden Adressen nicht initialisiert ist. ---------------------------------------------------------------- NAME reqdraw SYNOPSIS Boolean = reqdraw( rctadress, requester, window) A0 A1 A2 APTR rctadress; struct Requester *requester; struct Window *window; ERKLÄRUNG Zeichnet den angegebenen Requester in das angegebene Window. Das Fenster sollte mindestens so groß wie der Requester sein. RÜCKGABE Ist nicht genügend CHIP-Speicher vorhanden, wird FALSE zurückgeliefert, andernfalls TRUE. HINWEIS Wird für ein Gadget innerhalb des Requesters das Flag ENDGADGET definiert, wird der Requester durch Inuition automatisch ge- schlossen, sobald man das Gadget anklick. In diesem Fall ist es nicht mehr möglich, den Requester mit der Funktion reqend() zu schließen. ---------------------------------------------------------------- NAME reqdrawwindow SYNOPSIS window = reqdrawwindow( rctadress, requester, screen, title) A0 A1 A2 A3 struct Window *window; APTR rctadress; struct Requester *requester; struct Screen *screen; char *title; ERKLÄRUNG Öffnet ein Window in der Größe des angegebenen Requesters und zeigt diesen darin an. Das Window ist verschiebbar und kann in den Vorder- oder Hintergrund geklickt werden. Ohne Angabe einer Screenadresse wird das Window auf dem Workbenchscreen geöffnet. Beim Schließen des Requesters mit der Funktion reqend() wird auch das Window geschlossen. RÜCKGABE Konnte die Funktion erfolgreich ausgeführt werden, wird die Adresse des Windows zurückgeliefert, andernfalls NULL. HINWEIS Wird für ein Gadget innerhalb des Requesters das Flag ENDGADGET definiert, wird der Requester durch Inuition automatisch ge- schlossen, sobald man das Gadget anklick. In diesem Fall ist es nicht mehr möglich, den Requester mit der Funktion reqend() zu schließen. Man muß dann das Window selbst schließen. ---------------------------------------------------------------- NAME reqwait SYNOPSIS id = reqwait( rctadress, requester, &messageart) SHORT id; APTR rctadress; struct Requester *requester; ULONG messageart; ERKLÄRUNG Wartet auf Nachrichten, die auftreten, wenn mit der Maus Gadgets innerhalb des angegebenen Requesters angeklickt werden. RÜCKGABEN Zurückgeliefert wird die ID-Nummer des angeklickten Gadgets und in messageart, ob das Gadget gedrückt (GADGETDOWN) oder losgelassen wurde (GADGETUP). Da die Nachricht GADGETUP nur dann geliefert wird, wenn man den Mausebutton über dem Gadget losläßt, würde man keine Nachricht erhalten, wenn der Mausbutton außerhalb des Gadgets losgelassen wird. In diesem Fall liefert die Funktion in messageart eine MOUSEBUTTON Nachricht. Dabei muß nicht ausgewertet werden, ob es sich um SELECTDOWN oder SELECTUP handelt, da diese Nachricht nur bei SELECTUP geliefert wird. ---------------------------------------------------------------- NAME getreqstruct SYNOPSIS wert = getreqstruct( rctadress, requester, item) A0 A1 D0 VOID wert; APTR rctadress; struct Requester *requster; SHORT item; ERKLÄRUNG Liefert den Wert des angegebenen Requester-Strukturteils. Folgende Werte kann item annehmen: item = 0 -> struct Requester *OlderRequest item = 1 -> LeftEdge item = 2 -> TopEdge item = 3 -> Width item = 4 -> Height item = 5 -> RelLeft item = 6 -> RelTop item = 7 -> struct Gadget *ReqGadget item = 8 -> struct Border *ReqBorder item = 9 -> struct InuiText *ReqText item = 10 -> Flags item = 11 -> BackFill item = 12 -> struct Layer *ReqLayer item = 13 -> struct BitMap *ImageBMap item = 14 -> struct Window * RWindow ---------------------------------------------------------------- NAME setreqstruct SYNOPSIS Boolean = setreqstruct( rctadress, requester, item, wert) A0 A1 D0 D1 APTR rctadress; struct Requester *requester; SHORT item; SHORT wert; ERKLÄRUNG Setzt den in item angegebenen Struturteil der Requester- Struktur auf den in wert angegebenen Wert. Folgende Werte kann item annehmen: item = 1 -> LeftEdge item = 2 -> TopEdge item = 3 -> Width item = 4 -> Height item = 5 -> RelLeft item = 6 -> RelTop item = 7 -> Flags item = 8 -> BackFill Ist der Requester angezeigt, verändert sich nichts an seinem Aussehen. Erst wenn er erneut angezeigt wird, wird eine Ver~ änderung sichtbar. ---------------------------------------------------------------- NAME setreqtext SYNOPSIS Boolean = setreqtext( rctadress, requester, id, stringadr) A0 A1 D0 A2 APTR rctadress; struct Requester *requester; SHORT id; char *stringadr; ERKLÄRUNG Setzt einen neuen Textstring in eine Requestertext. Ist der Requester angezeigt wird das Textfeld neugezeichnet, so daß der neue Text direkt sichtbar wird. ---------------------------------------------------------------- NAME getreqtext SYNOPSIS stringadr = getreqtext( rctadress, requester, id) A0 A1 D0 char *stringadr; APTR rctadress; struct Requester *requester; SHORT id; ERKLÄRUNG Liefert die Adresse des Textstrings des angegebenen Requester~ textes. In GFA-Basic wird ein Basic-String zurückgeliefert. ---------------------------------------------------------------- NAME gettextstruct SYNOPSIS wert = gettextstruct( rctadress, requester, id, item) A0 A1 D0 D1 VOID wert; APTR rctadress; struct Requester *requester; SHORT id; SHORT item; ERKLÄRUNG Ermittelt den Wert des in item angegebenen Strukturteils der IntuiTextstruktur. Item kann folgende Werte annehmen: item = 0 -> FrontPen item = 1 -> BackPen item = 2 -> DrawMode item = 3 -> LeftEdge item = 4 -> TopEdge item = 5 -> struct TextAttr *ITextFont item = 6 -> Adresse der Textstrings item = 7 -> Adresse des nächsten Requester-Textes ---------------------------------------------------------------- NAME settextstruct SYNOPSIS Boolean = settextstruct( rctadress, requester, id, item, wert) A0 A1 D0 D1 D2 APTR rctadress; struct Requester *requester; SHORT id; SHORT item; SHORT wert; ERKLÄRUNG Schreibt den in wert angegebenen Wert in den in item angebenen Strukturteil der Intuitext Struktur eines Requestertextes. Item kann folgende Werte annehmen: item = 0 -> FrontPen item = 1 -> BackPen item = 2 -> DrawMode item = 3 -> LeftEdge item = 4 -> TopEdge ---------------------------------------------------------------- NAME setgadtext SYNOPSIS Boolean = setgadtext( rctadress, requester, id, stringadr) A0 A1 D0 A2 APTR rctadress; struct Requester *requester; SHORT id; char *stringadress; ERKLÄRUNG Setzt anstelle des Gadgettextes einen neuen Textstring ein. Ist der Requester auf dem Bildschirm angezeigt, wird das Gadget gleichzeitig neu gezeichnet, so daß der neue Text direkt sichtbar wird. ---------------------------------------------------------------- NAME getgadtext SYNOPSIS stringadr = getgadtext( rctadress, requester , id) A0 A1 D0 APTR rctadress; struct Requester *requester; short id; ERKLÄRUNG Ermittelt die Adresse des Gadgettexts der im Gadget mit der Objetnummer id gesetzt ist. In GFA-Basic wird ein Basic-String zurückgeliefert. ---------------------------------------------------------------- NAME getgadstruct SYNOPSIS wert = getgadstruct( rctadress, requester, id, item) A0 A1 D0 D1 void wert; APTR rctadress; struct Requester *requester; SHORT id; SHORT item; ERKLÄRUNG Ermittelt den Wert des Strukturteils item der Gadget Struktur des in der Objektnummer id angegebenen Gadgets. item kann folgende Werte annehmen: item = 0 -> Adresse der Gadget-Struktur item = 1 -> struct Gadget *NextGadget item = 2 -> LeftEdge item = 3 -> TopEdge item = 4 -> Width item = 5 -> Height item = 6 -> Flags item = 7 -> Activation item = 8 -> GadgetType item = 9 -> APTR GadgetRender item = 10 -> APTR SelectRender item = 11-> struct IntuiText *GadgetText item = 12-> MutualExclude item = 13-> APTR SpecialInfo item = 14-> Gadgetid item = 15-> APTR UserData ---------------------------------------------------------------- NAME setgadstruct SYNOPSIS Boolean = setgadstruct( rctadress, requester, id, item, wert) A0 A1 D0 D1 D2 APTR rctadress; struct Requester *requester; SHORT id; SHORT item; void wert ERKLÄRUNG Schreibt in das in item angegebene Strukturteil der Gadget Struktur den Wert wert. item kann folgende Werte annehmen: item = 1 -> LeftEdge item = 2 -> TopEdge item = 3 -> Width item = 4 -> Height item = 5 -> Flags item = 6 -> Activation item = 7 -> GadgetType item = 8 -> MutualExclude item = 9 -> Gadgetid item = 10-> APTR UserData ---------------------------------------------------------------- NAME redrawgadgets SYNOPSIS Boolean = redrawgadgets( rctadress, requester, id) A0 A1 D0 APTR rctadress; struct Requester *requester; SHORT id; ERKLÄRUNG Zeichnet alle Gadgets ab dem in id angegebenen Gadget ent- sprechend ihrer Verbindung neu. ---------------------------------------------------------------- NAME redrawgad SYNOPSIS Boolean = redrawgad( rctadress, requester, id, anzahl) A0 A1 D0 D1 APTR rctadress; struct Requester *requester; SHORT id; SHORT anzahl; ERKLÄRUNG Zeichnet die in anzahl angegebenen Gadgets ab dem in id angegebenen Gadget neu. ---------------------------------------------------------------- NAME aktivegad SYNOPSIS Boolean = aktivegad( rctadress, requester, id) A0 A1 D0 APTR rctadress; struct Requester *requester; SHORT id; ERKLÄRUNG Aktiviert das in id angegebene String Gadget, so da s, requester, id, stringadr) A0 A1 D0 A2 APTR rctadress; struct Requester *requester; SHORT id; char *stringadr; ERKLÄRUNG Setzt einen neuen Text in das Eingabefeld eines String Gadgets. Ist der Requester zu dem das Gadget gehört angezeigt, wird der neue Text direkt sichbar. ---------------------------------------------------------------- NAME getstrgadtext SYNOPSIS stringadr = getstrgadtext( rctadress, requester, id) A0 A1 D0 char *stringadress; APTR rctadress; struct Requester *requester; ERKLÄRUNG Ermittelt die Adresse des Textes der in das Eingabefeld des String Gadget mit der Objektnummer id eingegeben wurde. In GFA-Basic wird ein Basic-String zurückgeliefert. ---------------------------------------------------------------- NAME getstrgadstruct SYNOPSIS wert = getstrgadstruct( rctadress, requester, id, item) A0 A1 D0 D1 void wert; APRT rctadress; struct Requester *requester; SHORT id; SHORT item; ERKLÄRUNG Ermittelt den in item angegebenen Strukturteil der Stringinfo Struktur des String Gadgets mit der Objektnummer id. item kann folgende Werte annehmen: item = 0 -> Adresse der StringInfo-Struktur item = 1 -> *Buffer item = 2 -> *UndoBuffer item = 3 -> BufferPos item = 4 -> MaxChars item = 5 -> DispPos item = 6 -> UndoPos item = 7 -> NumChars item = 8 -> DispCount item = 9 -> CLeft item = 10-> CTop item = 11-> struct Layer *LayerPtr item = 12-> LongInt item = 13-> struct KeyMap *AltKeyMap ---------------------------------------------------------------- NAME setstrgadstruct SYNOPSIS Boolean = setstrgadstruct( rctadress, requester, id, item, wert) A0 A1 D0 D1 D2 APTR rctadress; struct Requester *requester; SHORT id; SHORT item; SHORT wert; ERKLÄRUNG Schreibt den in wert angegebenen Wert in das in item angegebene Strukturteil der Stringinfo Struktur des String Gadgets mit der Objektnummer id. item kann folgende Werte annehmen: item = 1 -> BufferPos item = 2 -> MaxChars item = 3 -> DispPos ---------------------------------------------------------------- NAME getpropgadstruct SYNOPSIS wert = getpropgadstruct( rctadress, requester, id, item) A0 A1 D0 D1 void wert APTR rctadress; struct Requester *requester; SHORT id; SHORT item; ERKLÄRUNG Ermittelt den Wert des in item angegebenen Strukturteiles der Propinfo Strutur des Proportional Gadgets mit der Objektnummer id. item kann folgende Werte annehmen: item = 0 -> Adresse der PropInfo-Struktur item = 1 -> Flags item = 2 -> HorizPot item = 3 -> VertPot item = 4 -> HorizBody item = 5 -> VertBody item = 6 -> CWidth item = 7 -> Height item = 8 -> HPotRes item = 9 -> VPotRes item = 10-> LeftBorder item = 11-> TopBorder ---------------------------------------------------------------- NAME setpropgadstuct SYNOPSIS Boolean = setpropgadstruct( rctadress, requester, id, item, wert) A0 A1 D0 D1 D2 APTR rctadress; struct Requester *requester; SHORT id; SHORT item; UHORT wert; ERKLÄRUNG Schreibt den in wert angegebenen Wert in den in item angegegeben Strukturteil der Propinfo Struktur des Proportional Gagets mit der Objektnummer id. item kann folgende Werte annehmen: item = 1 -> Flags item = 2 -> HorizPot item = 3 -> VertPot item = 4 -> HorizBody item = 5 -> VertBody ---------------------------------------------------------------- Menü-Bibliothek NAME menudraw SYNOPSIS Boolean = menudraw( rctadress, menu, window) A0 A1 A2 APTR rctadress; struct Menu *menu; struct Window *window; ERKLÄRUNG Setzt in das in window angegebene Window die in menu angegebene Menüleiste. ---------------------------------------------------------------- NAME menuend SYNOPSIS Boolean = menuend( rctadress, menu, window) A0 A1 A2 APTR rctadress; struct Menu *menu; struct Window *window; ERKLÄRUNG Löscht die in menu angegeben Menüleiste aus dem in window angegebenen Window. Die Menüleiste wird dabei nicht aus dem Speicher gelöscht. Dies geschieht mit der Funktion rctfree(). ---------------------------------------------------------------- NAME setmenutitle SYNOPSIS Boolean = setmenutitle( rctadress, menu, menuid, stringadr) A0 A1 D0 A2 APTR rctadress; struct Menu *menu; SHORT menuid; char *stringadr; ERKLÄRUNG Schreibt den neuen String in den Menütitel mit der Objektnummer menuid. ---------------------------------------------------------------- NAME getmenutitle SYNOPSIS stringadr = getmenutitle( rctadress, menu, menuid) A0 A1 D0 char *stringadr; APTR rctadress; struct Menu *menu; SHORT menuid; ERKLÄRUNG Ermittelt die Adresse des Menütiteltextes des Menütitel mit der Objektnummer menuid. In GFA-Basic wird ein Basic String zurückgeliefert. ---------------------------------------------------------------- NAME setmenustruct SYNOPSIS Boolean = setmenustruct( rctadress, menu, menuid, item, wert) A0 A1 D0 D1 D2 APTR rctadress; struct Menu *menu; SHORT menuid; SHORT item; void wert; ERKLÄRUNG Schreibt den in wert angegebenen Wert in den in item angegebenen Strukturteil des Menüs mit der Objektnummer menuid. item kann folgende Werte anehmen: item = 0 -> Adresse der Menu-Struktur item = 1 -> struct Menu *NextMenu item = 2 -> LeftEdge item = 3 -> TopEdge item = 4 -> Width item = 5 -> Height item = 6 -> Flags item = 7 -> *MenuName item = 8 -> struct MenuItem *FirstItem ---------------------------------------------------------------- NAME getmenustruct SYNOPSIS wert = getmenustruct( rctadress, menu, menuid, item) A0 A1 D0 D1 SHORT wert; APTR rctadress; struct Menu *menu; SHORT menuid; SHORT item; ERKLÄRUNG Ermittelt den Wert des in item angegebenen Strukturteil der Menü Struktur des Menüs mit der Objektnummer menuid. item kann folgende Werte anehmen: item = 1 -> LeftEdge item = 2 -> TopEdge item = 3 -> Width item = 4 -> Height item = 5 -> Flags ---------------------------------------------------------------- NAME setmenuitext SYNOPSIS Boolean = setmenuitext( rctadress, menu, menuid, itemid, stringadr) A0 A1 D0 D1 A2 APTR rctadress; struct Menu *menu; SHORT menuid; SHORT itemid; char *stringadr; ERKLÄRUNG Schreibt den in String der an der Adresse stringadr im Speicher steht in den Menüeintrag mit der Objektnummer itemid. ---------------------------------------------------------------- NAME getmenuitext SYNOPSIS stringadr = getmenuitext( rctadress, menu, menuid, itemid) A0 A1 D0 D1 char *stringadr; APTR rctadress; struct Menu *menu; SHORT menuid; SHORT itemid; ERKLÄRUNG Ermittlet die Adresse des Textstrings des Menüeintrages mit der Objektnummer itemid im Pull-Down Menü mit der Objektnummer menuid. In GFA-Basic wird ein Basic-String zurückgeliefert. ---------------------------------------------------------------- NAME setmenuitemstruct SYNOPSIS Boolean = setmenuitemstruct( rctadress, menu, menuid, itemid, item, wert) A0 A1 D0 D1 D2 D3 APTR rctadress; struct Menu *menu; SHORT menuid; SHORT itemid; SHORT item; void wert; ERKLÄRUNG Schreibt den in wert enthaltenen Wert in die Strukturkomponente item des Menüeintrages mit der Objektnummer itemid im Pull-Down- Menü mit der Objektnummer menuid. item kann folgende Werte annehmen: item = 1 -> LeftEdge item = 2 -> TopEdge item = 3 -> Width item = 4 -> Height item = 5 -> Flags item = 6 -> MutualExclude item = 7 -> Command item = 8 -> NextSelect ---------------------------------------------------------------- NAME getmenuitemstruct SYNOPSIS wert = getmenuitemstruct( rctadress, menu, menuid, itemid, item) A0 A1 D0 D1 D2 void wert; APTR rctadress; struct Menu *menu; SHORT menid; SHORT itemid; SHORT item; ERKLÄRUNG Ermittelt den Wert der in item angegebenen Strukturkomponente der Menuitem Struktur des Menüeintrages mit der Objektnummer itemid im Pull-Down-Menü mit der Objektnummer menuid. item kann folgende Werte annehemen: item = 0 -> Adresse der MenuItem-Struktur item = 1 -> struct MenuItem *NextItem item = 2 -> LeftEdge item = 3 -> TopEdge item = 4 -> Width item = 5 -> Height item = 6 -> Flags item = 7 -> MutualExclude item = 8 -> APTR ItemFill item = 9 -> APTR SelectFill item = 10-> Command item = 11-> struct MenuItem *SubItem item = 12-> NextSelect ---------------------------------------------------------------- NAME setmenustext SYNOPSIS Boolean = setmenustext( rctadress, menu, menuid, itemid, subid, stringadr) A0 A1 D0 D1 D2 A2 APTR rctadress; struct Menu *menu; SHORT menuid; SHORT itemid; SHORT subid; char *stringadr; ERKLÄRUNG Schreibt einen neuen Text in das Submenü mit der Objektnummer subid, dessen ursprung im Menüeintrag mit der Objektnummer itemid liegt und sich im Pull-Down-Menü mit der Objektnummer menuid befindete. ---------------------------------------------------------------- NAME getmenustext SYNOPSIS stringadr = getmenustext( rctadress, menu, menuid, itemid, subid) A0 A1 D0 D1 D2 char *stringadr; APTR rctadress; struct Menu *menu; SHORT menuid; SHORT itemid; SHORT subid; ERKLÄRUNG Ermittelt die Adresse des Textstrigns des Submenü mit der Objektnummer subid, dessen ursprung im Menüeintrag mit der Objektnummer itemid liegt und sich im Pull-Down-Menü mit der Objektnummer menuid befindete. In GFA-Basic wird ein Basic-String zurückgeliefert. ---------------------------------------------------------------- NAME setmenusubstruct SYNOPSIS Boolean = setmenusubstruct( rctadress, menu, menuid, itemid, subid ,item, wert) A0 A1 D0 D1 D2 D3 D4 APTR rctadress; struct Menu *menu; SHORT menuid; SHORT itemid; SHORT subid; SHORT item; void wert; ERKLÄRUNG Schreibt den Inhalt von wert in die in item angegebene Struktur- komponuente des Submenüs mit der Objetnummer subid, dessen Ursprung im Menüeintrag mit der Objektnummer itemid liegt und sich im Pull-Down-Menü mit der Objektnummer menuid befindete. item kann folgende Werte annehmen: item = 1 -> LeftEdge item = 2 -> TopEdge item = 3 -> Width item = 4 -> Height item = 5 -> Flags item = 6 -> MutualExclude item = 7 -> Command item = 8 -> NextSelect ---------------------------------------------------------------- NAME getmenusubstruct SYNOPSIS wert = getmenusubstruct( rctadress, menu, menuid, itemid, subid, item) A0 A1 D0 D1 D2 D3 void wert; APRT rctadress; struct Menu *menu; SHORT menuid; SHORT itemid; SHORT subid; SHORT item; ERKLÄRUNG Ermittelt den Wert der in item angegebenen Strukturkomponenten des Submenü mit der Objektnummer subid, dessen ursprung im Menüeintrag mit der Objektnummer itemid liegt und sich im Pull-Down-Menü mit der Objektnummer menuid befindete. item kann folgende Werte annehemen: item = 0 -> Adresse der MenuItem-Struktur item = 1 -> struct MenuItem *NextItem item = 2 -> LeftEdge item = 3 -> TopEdge item = 4 -> Width item = 5 -> Height item = 6 -> Flags item = 7 -> MutualExclude item = 8 -> APTR ItemFill item = 9 -> APTR SelectFill item = 10-> Command item = 11-> NextSelect ---------------------------------------------------------------- NAME showscreen SYNOPSIS screen = showscreen( rctadress, mod, depth, title) A0 D0 D1 A1 struct Screen *screen; APTR rctadress; USHORT mod; SHORT depth; char *title; ERKLÄRUNG Öffnet einen Screen in der angegebenen Auflösung und Tiefe und liefert die Adresse auf die Screen Struktur zurück. Unter Workbench 2.0 wird der Screen automatisch im 3D-Look geöffnet. ---------------------------------------------------------------- NAME remscreen SYNOPSIS Boolean = remscreen( rctadress, screen) A0 A1 APTR rctadress; struct Screen *screen; ERKLÄRUNG Bevor der Screen geschlossen wird, werden alle Windows und Requester geschlossen, so daß keine Fensterleichen entstehen. ---------------------------------------------------------------- NAME form_alert SYNOPSIS id = form_alert( default, commandstring) D0 A0 SHORT id; SHORT default; char *commandstring; ERKLÄRUNG Zeigt eine Alarm-Requester zentriert auf dem aktiven Screen an. Im commandstring sind sowohl die Texte der Alarmmeldung als auch die der Gadgets enthalten. Es können maximal 5 Textzeilen je 30 Zeichen und Maximal 3 Gadgets mit je 12 Zeichen ausgegeben werden. Der String hat folgendes Format: "[SYMBOLNUMMER][1. Textzeile|2. Textzeile|3. Textzeile|4. Textzeile|5. Textzeile][1. Gadget|2. Gadget|3. Gadget]" Wie Sie sehen werden die Textzeilen und die Gadgets durch ein |- Zeichen voneinander getrennt. Die erste Ziffer, die mit SYMBOLNUMMER bezeichnet ist, wählt das Symbol, das links im Requester erscheinen soll. Es gibt vier Möglichkeiten: 0 -> kein Symbol 1 -> NOTE (ein auf der Spitze stehendes Quadrat mit Ausrufezeichen) 2 -> WAIT (ein Fragezeichen in einem Achtung-Schild) 3 -> STOP (ein STOP-Schild) Eines der Gadgets kann durch die Variable default als Default-Gadgets definiert werden. Das Default-Gadget ist durch eine dickeren Rahmen in der Farbe mit dem Index 3 unübersehbar und kann mit der Taste Return ausgewählt werden. Ist der Requester auf dem Bildschirm angezeigt, kann der Rahmen mit den Cursor-Tasten von Gadget zu Gadget gewechselt werden. Es ist immer das Gadget mit Return wählbar, auf dem der Default- Rahmen gezeichnet ist. Ist default = 0 gibt es kein Default-Gadget. ---------------------------------------------------------------- NAME filer SYNOPSIS boolean = filer( rctfilereq) struct RCTFileRequester *rctfilereq; ERKLÄRUNG Durch Aufrufen dieser Funktion erscheint ein komfortabler, vollkommen tastatursteuerbarer, reentranter Datei-Requester. Der Requester erscheint wahlweise in einem verschiebaren Window oder in einem feststehenden Requester. Die Datenstruktur deren Adresse übergeben werden muß, muß nicht unbedingt initialisiert werden, was den Aufruf aus Programmiersprachen wie Basic erheblicht vereinfacht. Die Struktur sollte aber wenigstens mit Nullen gefüllt sein. Die Datenstruktur und die einstellbaren Flags wurden vom FileRequester Aufruf der REQUESTER.Library übernommen, so daß eine Umstellung auf den RCT-File-Requester sehr einfach gemacht werden kann. Die Struktur sieht folgendermaßen aus: struct RCTFileRequester { UWORD VersionNumber; /* Die Versionsnummer der Library, die beim Programmieren verwendet wird */ char *Title; /* Entweder der Fenstertitel oder ein besonderes Requestergadget */ char *Dir; /* Pfad-Array (DSIZE+1) */ char *File; /* Dateiname-Array (FCHARS+1) */ char *PathName; /* Pfad- und Dateinamen-Array (DSIZE+FCHARS+2) */ struct Window *Window; /* Window in dem der Requester angezeigt werden soll oder NULL */ UWORD reserved; /* wird ignoriert */ UWORD numlines; /* wird ignoriert */ UWORD numcolumns; /* wird ignoriert */ UWORD devcolumns; ULONG Flags; /* Definitionen der Flags siehe weiter */ UWORD dirnamescolor; /* wird ignoriert */ UWORD filenamescolor; /* wird ignoriert */ UWORD devicenamescolor; /* wird ignoriert */ UWORD fontnamescolor; /* wird ignoriert */ UWORD fontsizescolor; /* wird ignoriert */ UWORD detailcolor; /* wird ignoriert */ UWORD blockcolor; /* wird ignoriert */ UWORD gadgettextcolor; /* wird ignoriert */ UWORD textmessagecolor; /* wird ignoriert */ UWORD stringnamecolor; /* wird ignoriert */ UWORD stringgadgetcolor; /* wird ignoriert */ UWORD boxbordercolor; /* wird ignoriert */ UWORD gadgetboxcolor; /* wird ignoriert */ UWORD FRU_Stuff[18]; /* Reserviert, sollte NULL sein */ struct DateStamp DirDateStamp; /* wird ignoriert */ UWORD WindowLeftEdge; /* Diese beiden Felder werden benutzt, um den Requester zu */ UWORD WindowTopEdge; /* positionieren. */ UWORD FontYSize; /* wird ignoriert */ UWORD FontStyle; /* wird ignoriert */ ULONG *reserved1; /* Reserviert */ char Hide[WILDLENGTH+2]; /* Wildcards Text für Dateien die nicht angezeigt werden sollen */ char Show[WILDLENGTH+2]; /* Wildcards Text für Dateien die angezeigt werden sollen */ WORD FileBufferPos; /* Werte für Stringgadgets */ WORD FileDispPos; WORD DirBufferPos; WORD DirDispPos; WORD HideBufferPos; WORD HideDispPos; WORD ShowBufferPos; WORD ShowDispPos; /**; Die nachfolgenden Felder sind Privat und sollten aus Ihren Programmen nie angesprochen oder genutzt werden */ APTR privat1; APTR privat2; APTR privat3; char privat4[DSIZE+2]; /* Used for keeping a record of which */ struct FileInfoBlock *privat6; WORD privat7; WORD privat8; WORD privat9; WORD privat10; }; DSIZE ist die Definition für die Größe des Pfadnamen-Arrays. FCHARS steht für die Größe des Dateinamen-Arrays. WILDLENGTH ist die länge des Stings für den Hide- und Showtext. Durch folgende Flags kann das Aussehen und die Art des Requesters verändert werden: FRQCACHINGM /* Wenn das eingelesene Verzeichnis zwischengespeichert und beim nächsten Aufruf des Requesters wieder aufgerufen werden soll */ FRQABSOLUTEXYM /* in den Felder WindowLeftEdge, WindowTopEdge werden Koordianten angegeben anderenfalls wird der Requester zentiert */ FRQCACHEPURGEM /* Das zwischengespeicherte Verzeichnis wird neu geladen wenn sich das Datum des Verzeichnisses geändert hat */ FRQNOHALFCACHEM /* Die eingelesenen Dateien werden nicht bis zum nächsten Aufruf zwischengespeichert, wenn sie nicht vollständig eingelesen werden konnten */ FRQNOSORTM /* Die Dateinamen sollen unsortiert angezeigt werden */ FRQNODRAGM /* Der Requester kann nciht verschoben oder in den Hinter-/Vordergrund geholt werden */ FRQSAVINGM /* Im "OK-Gadget" wird der Text "SAVE" angezeigt */ FRQLOADINGM /* Im "OK-Gadget" wird der text "LOAD" angezeigt */ FRQNODEPTHM /* Das Fenster soll zwar verschiebbar aber nicht in der Vorder-/Hintergrund stellbar sein. */ Alle Funktionen des Requesters können mit der Tastatur erreicht werden. Die Gadgets sind durch Drücken der Ctrl-Taste zusammen mit dem jeweiligen Anfangsbuchstaben des Gadgettextes zu erreichen. Das aktuelle Device sowie der erste Dateiname sind nach Aufruf des Requester invers unterlegt. Mit den Cursortasten-Auf und -Ab kann der Dateiname gewechselt werden. Tatsächlich angewählt und in das String-Gadtet übernommen wird er allerdings erst, wenn Return betätigt wird. Genau so verhält es sich auch mit den Devices. Es muß lediglich zusammen mit den Cursortasten die Ctrl- Taste gedrückt werden um in der Deviceliste zu scrollen. Ctrl und Return wählt ein Device an um lädt dessen Inhaltsverzeichnis. Eventuell Pfadeinstellungen werden beim Wechseln der Devices gemerkt und bei erneuten Wechsel wieder eingestellt. ---------------------------------------------------------------- NAME filercachefree SYNOPSIS void filercachefree( rctfilereq) A0 struct RCTFileRequester *rctfilereq; ERKLÄRUNG Ist bei Aufruf des FilerRequester das Flag zum Zwischenspeichern (FRQCACHINGM) des Verzeichnisses eingestellt gewesen, muß spätestens beim Beenden des Programmes der Speicher wieder freigeben werden. ---------------------------------------------------------------- NAME waitall SYNOPSIS void waitall( Port, message) A0 A1 struct MessagePort *port; struct IntuiMessage *message; ERKLÄRUNG Anders als bei reqwait werden bei dieser Funktion die IDCMP-Flags des Fensters nicht beeinflußt. Sie liefert eine exakte Kopie der Nachricht und schickt die Original-Nachricht an das System zurück. Die Auswertung bleibt Ihnen überlassen. Beispiel: struct IntuiMessage message; /* kein Pointer sondern die ganze Struktur */ struct Window *window; waitall( window->UserPort, &message); if(message.Class & RAWKEY) { ...... } SIEHE reqwait ---------------------------------------------------------------- NAME gaddrawwindow SYNOPSIS window = gaddrawwindow( rctadress, requester, screen, title, idcmp, flags) A0 A1 A2 A3 d0 d1 struct Window *window; APTR rctadress; struct Requester *requester; struct Screen *screen; char *title; ULONG idcmp; ULONG flags; ERKLÄRUNG Öffnet ein Window in der Größe des angegebenen Requesters und zeigt diesen darin an. Ohne Angabe einer Screenadresse wird das Window auf dem Workbenchscreen geöffnet. Beim Schließen des Requesters mit der Funktion reqend() wird auch das Window geschlossen. Der einzige Unterschied zu reqdrawwindow ist der, daß alle Gadgets, Requestertexte und Border direkt auf Window gebracht werden. Man hat dadurch den Vorteil, das zusätzlich zur Abfrage der Gadgets noch die Menüleiste berücksichtigt werden kann. RÜCKGABE Konnte die Funktion erfolgreich ausgeführt werden, wird die Adresse des Windows zurückgeliefert, andernfalls NULL. HINWEIS Wird für ein Gadget innerhalb des Requesters das Flag ENDGADGET definiert, wird der Requester durch Inuition automatisch geschlossen, sobald man das Gadget anklick. In diesem Fall ist es nicht mehr möglich, den Requester mit der Funktion reqend() zu schließen. Man muß dann das Window selbst schließen. ---------------------------------------------------------------- Bei Fragen zu R.C.T. können Sie sich gern mit unserer Hotline in Verbindung setzen. Die Hotline ist Werktags zwischen 15:00 und 17:00 Uhr unter der Rufnummer 06196-43780 erreichbar.