home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 2 / crawlyvol2.bin / program / c / sgem120c / sys_gem.pc < prev    next >
Encoding:
Text File  |  1994-05-21  |  151.0 KB  |  4,311 lines

  1. screen ( sensitive ( "Übersicht" ),
  2.          sensitive ( "SysGem"     ))
  3. SysGem V1.20                                              \#Gesamt-Index\#
  4. ----------------------------------------------------------------------
  5.  
  6.   \#Registrierung\#       - Wie kriege ich die 'Please register' Meldung
  7.                         weg?
  8.   \#Autor\#               - Wer hat das Teil hier verbrochen?
  9.   \#Objecttypen\#         - Was die Lib noch so drauf hat...
  10.   \#Signale\#             - MiNT-Signale abfangen
  11.   \#SysInfo\#             - Super-Tool fuer alle, die wissen wollen, was
  12.                         im Rechner so ab geht...
  13.   \#Wichtig\#             - Wichtig! Lesen!
  14.  
  15.   \#Konzept\#             - Wie arbeitet SysGem?
  16.  
  17. ----------------------------------------------------------------------
  18.  
  19. SysGem bietet Funktion, die sich in folgende Kategorien einteilen
  20. lassen:
  21.  
  22.  \#Abfrageroutinen\#
  23.  \#Bildschirmfunktionen\#
  24.  \#Eigener Desktop\#
  25.  \#Dialogfunktionen\#
  26.  \#Einstellungen\# / Verhalten von Funktionen
  27.  \#Fensterfunktionen\#
  28.  \#Kommunikation\#
  29.  \#Manipulation\#
  30.  \#Menüzeile\#
  31.  \#Popup's\#
  32.  \#Resource\#
  33.  \#Sliderboxen\#
  34.  \#Textfenster\#
  35.  \#Timer\#
  36.  
  37. \end
  38.  
  39. screen ( sensitive ( "Dialogfunktionen" ))
  40. \#SysGem\# V1.20
  41. ----------------------------------------------------------------------
  42.  
  43.   \#ChangeButton\#        - Text eines Buttons ändern
  44.   \#ClearEditFields\#     - Editfelder eines Dialogs loeschen
  45.   \#DelDialog\#           - Dialog aus der Verwaltung nehmen
  46.   \#DoDialog\#            - Komplette Dialogdurchfuehrung
  47.   \#GetEditFields\#       - Alle Editfelder auslesen
  48.   \#GetText\#             - Einzelnes Text-Feld auslesen
  49.   \#NewDialog\#           - Dialog in Verwaltung aufnehmen
  50.   \#RedrawDialog\#        - Objektbaum neuzeichnen
  51.   \#RedrawObj\#           - Einzelnes Objekt neuzeichnen
  52.   \#SetEditField\#        - Cursor in ein Editfeld setzen
  53.   \#SetFieldProc\#        - Proc. fuer Editfelder anmelden
  54.   \#SetText\#             - Text eines Objektes setzen
  55.   \#UseRightButton\#      - Rechte Maustaste benutzen?
  56.   \#WindowDialog\#        - Fensterdialog anmelden
  57.  
  58. \end
  59. screen ( sensitive ( "Fensterfunktionen" ))
  60. \#SysGem\# V1.20
  61. ----------------------------------------------------------------------
  62.  
  63.   \#CloseAllWindows\#     - Alle Fenster schliessen
  64.   \#CloseWindow\#         - Ein Fenster (versuchen) zu schliessen
  65.   \#DoDialog\#            - Komplette Dialogdurchfuehrung
  66.   \#GetHandle\#           - Fensterhandle anhand der Id ermitteln
  67.   \#GetTopWindow\#        - Oberstes Fenster ermitteln
  68.   \#GetWindowId\#         - Fensterid anhand des Handles ermitteln
  69.   \#IsVisible\#           - Fenster ganz sichtbar?
  70.   \#LinkImage\#           - Icon zum Iconifizieren anmelden
  71.   \#OpenLogWindow\#       - Textfenster öffnen
  72.   \#OpenWindow\#          - Fenster oeffnen
  73.   \#RectIntersect\#       - Ueberlappung von Rechtecken pruefen
  74.   \#RedrawArea\#          - Bildschirmbereich neuzeichnen
  75.   \#RedrawObj\#           - Einzelnes Objekt neuzeichnen
  76.   \#RedrawWindow\#        - Komplettes Fenster neuzeichnen
  77.   \#ScrollWindow\#        - Im Fenster den Inhalt scrollen lassen
  78.   \#SetAlertTitle\#       - Überschrift der Alertbox setzen
  79.   \#SetWinMaxSize\#       - Maximale Fenstergröße setzen
  80.   \#SetWinMinSize\#       - Minimale Fenstergröße setzen
  81.   \#SetWindowInfo\#       - Text der Info-Zeile setzen
  82.   \#SetWindowName\#       - Fenstertitel setzen
  83.   \#SetWindowParm\#       - Parameter eines Fensters setzen und abfragen
  84.   \#TopWindow\#           - Fenster nach oben holen
  85.   \#WindowDialog\#        - Fensterdialog anmelden
  86.  
  87. \end
  88.  
  89. screen ( sensitive ( "Abfrageroutinen" ))
  90. \#SysGem\# V1.20
  91. ----------------------------------------------------------------------
  92.  
  93.   \#CalcArea\#            - Ausmasse eines Objekts berechnen
  94.   \#GetCookie\#           - Cookie suchen
  95.   \#GetFlags\#            - Abfragen, ob ein Flag gesetzt ist
  96.   \#GetHandle\#           - Fensterhandle anhand der Id ermitteln
  97.   \#GetState\#            - Abfragen, ob ein Status gesetzt ist
  98.   \#GetTopWindow\#        - Oberstes Fenster ermitteln
  99.   \#GetWindowId\#         - Fensterid anhand des Handles ermitteln
  100.   \#IsMenuKey\#           - Menüshortcuts finden
  101.   \#IsVisible\#           - Fenster ganz sichtbar?
  102.   \#has_search\#          - appl_search vorhanden?
  103.   \#magx_avail\#          - Versionsnummer von Mag!X holen
  104.   \#mint_avail\#          - Versionsnummer von MiNT
  105.   \#objc_frame\#          - Rand eines Objekts berechnen
  106.   \#winx_avail\#          - Winx da?
  107.  
  108. \end
  109. screen ( sensitive ( "Einstellungen" ))
  110. \#SysGem\# V1.20
  111. ----------------------------------------------------------------------
  112.  
  113.   \#DialPosXY\#           - Dialoge an Mausposition / zentriert?
  114.   \#FrameTextColor\#      - FrameText Farbe setzen
  115.   \#SetAccProc\#          - Acc-Behandlungsroutinen setzen
  116.   \#SetButton\#           - Aussehen der Alert-Buttons setzen
  117.   \#SetCookie\#           - Cookie oder Wert setzen
  118.   \#SetIconColor\#        - Iconfarbe fuer Alertbox setzen
  119.   \#SetMessageProc\#      - Empfangsroutine fuer Nachrichten anmelden
  120.   \#SetProcTimer\#        - Timerfunktion anmelden
  121.   \#SetReturn\#           - Verhalten der Return-Taste setzen
  122.   \#SetTimer\#            - Timer setzen
  123.   \#ShortCutColor\#       - Farbe der Shortcuts setzen
  124.   \#TellKeyStrokes\#      - Tastendruecke weiterleiten?
  125.   \#UseHighButtons\#      - Hohe Buttons in Alertboxen?
  126.  
  127. \end
  128. screen ( sensitive ( "Manipulation" ))
  129. \#SysGem\# V1.20
  130. ----------------------------------------------------------------------
  131.  
  132.   \#ChgInList\#           - Textzeile ändern/abfragen
  133.   \#DelFlags\#            - Einzelne Objekt-Flags loeschen
  134.   \#DelState\#            - Einzelne Objekt-Stati loeschen
  135.   \#SetFlags\#            - Einzelne Objekt-Flags setzen
  136.   \#SetGlobalFlags\#      - Mehrere Flags setzen
  137.   \#SetGlobalState\#      - Mehrere Stati setzen
  138.   \#SetSliderPos\#        - Position in Sliderbox setzen
  139.   \#SetState\#            - Einzelne Objekt-Stati setzen
  140.  
  141. \end
  142. screen ( sensitive ( "Resource" ))
  143. \#SysGem\# V1.20
  144. ----------------------------------------------------------------------
  145.  
  146.   \#LoadResource\#        - Resource-Datei laden
  147.   \#RscAdr\#              - Resource-Adressen ermitteln
  148.   \#RscFree\#             - Resourcen-Speicher freigeben
  149.  
  150. \end
  151. screen ( sensitive ( "Bildschirmfunktionen" ))
  152. \#SysGem\# V1.20
  153. ----------------------------------------------------------------------
  154.  
  155.   \#ClearArea\#           - Bereich freigeben
  156.   \#CopyArea\#            - Bereich kopieren
  157.   \#FreeArea\#            - Bereich und Variable freigeben
  158.   \#MoveScreen\#          - Bereich kopieren
  159.   \#NewArea\#             - Neue Variable anmelden
  160.   \#RestoreArea\#         - Mit SaveArea gesicherter Bereich wieder zurueckschreiben
  161.   \#SaveArea\#            - Bereich in Speicher kopieren
  162.  
  163. \end
  164. screen ( sensitive ( "Textfenster" ))
  165. \#SysGem\# V1.20
  166. ----------------------------------------------------------------------
  167.  
  168.   \#AddToList\#           - Zeile an Liste hinzufügen
  169.   \#CountLines\#          - Zeilen im Textfenster zählen
  170.   \#DelInList\#           - Zeile in der Liste löschen
  171.   \#Display\#             - Textdatei laden und darstellen
  172.   \#HideCursor\#          - Cursor ausschalten
  173.   \#LinkList\#            - List an Fenster binden
  174.   \#OpenLogWindow\#       - Textfenster öffnen
  175.   \#ShowCursor\#          - Cursor einschalten
  176.   \#do_qsort\#            - Zeilen sortieren
  177.   \#wcls\#                - Fenster löschen
  178.   \#wgetchar\#            - Zeichen an Position abfragen
  179.   \#wgetxy\#              - Cursor abfragen
  180.   \#wposxy\#              - Cursor setzen
  181.   \#wprintf\#             - Schreiben ins Fenster
  182.  
  183. \end
  184. screen ( sensitive ( "Sliderboxen" ))
  185. \#SysGem\# V1.20
  186. ----------------------------------------------------------------------
  187.  
  188.   \#AddSliderItem\#       - Element zur Sliderbox hinzunehmen
  189.   \#LinkSlider\#          - Sliderbox anmelden
  190.   \#RedrawSliderBox\#     - Sliderbox neuzeichnen
  191.   \#ScrollSlider\#        - Elemente scollen lassen
  192.   \#SetSliderPos\#        - Position in Sliderbox setzen
  193.   \#UnLinkSlider\#        - Sliderbox aus der Verwaltung nehmen
  194.  
  195. \end
  196. screen ( sensitive ( "Popup's" ))
  197. \#SysGem\# V1.20
  198. ----------------------------------------------------------------------
  199.  
  200.   \#Cycle\#               - Circle-Buttons
  201.   \#Listbox\#             - Listbox darstellen
  202.   \#PopUp\#               - Pop-Up darstellen
  203.   \#xPopUp\#              - Erweiterte PopUp's
  204.  
  205. \end
  206. screen ( sensitive ( "Menüzeile" ))
  207. \#SysGem\# V1.20
  208. ----------------------------------------------------------------------
  209.  
  210.   \#IsMenuKey\#           - Menüshortcuts finden
  211.   \#RemDeskTopMenu\#      - Hauptmenue abmelden
  212.   \#SelectMenu\#          - Menuetitel manuell selektieren
  213.   \#SetDeskTopMenu\#      - Menuezeile setzen
  214.  
  215. \end
  216. screen ( sensitive ( "Eigener Desktop" ))
  217. \#SysGem\# V1.20
  218. ----------------------------------------------------------------------
  219.  
  220.   \#RemoveDeskTop\#       - Eigenen Desktop entfernen
  221.   \#SetDeskTop\#          - Eigenen Desktop anmelden
  222.  
  223. \end
  224. screen ( sensitive ( "Cookies" ))
  225. \#SysGem\# V1.20
  226. ----------------------------------------------------------------------
  227.  
  228.   \#GetCookie\#           - Cookie suchen
  229.   \#RemoveCookie\#        - Cookie entfernen
  230.   \#SetCookie\#           - Cookie oder Wert setzen
  231.  
  232. \end
  233. screen ( sensitive ( "Timer" ))
  234. \#SysGem\# V1.20
  235. ----------------------------------------------------------------------
  236.  
  237.   \#SetTimer\#            - Timer setzen
  238.   \#SetProcTimer\#        - Timerfunktion anmelden
  239.  
  240. \end
  241. screen ( sensitive ( "Kommunikation" ))
  242. \#SysGem\# V1.20
  243. ----------------------------------------------------------------------
  244.  
  245.   \#ProgramExist\#        - Schauen, ob SysGem-Programm existiert
  246.   \#SendMsg\#             - Welche gibt es?
  247.   \#SendSgMsg\#           - Nachricht an SysGem-Programm schicken
  248.   \#SetMessageProc\#      - Empfangsroutine fuer Nachrichten anmelden
  249.  
  250. \end
  251. screen ( sensitive ( "Sonstiges" ))
  252. \#SysGem\# V1.20
  253. ----------------------------------------------------------------------
  254.  
  255.   \#Alert\#               - Alertbox darstellen
  256.   \#Exit_GEM\#            - Abmelden beim GEM
  257.   \#HandleSysGem\#        - Kontrolle an SysGem abgeben
  258.   \#Init_GEM\#            - Anmelden beim GEM (\#Initialisierung\#)
  259.   \#TerminateSysGem\#     - SysGem verlassen
  260.  
  261. \end
  262.  
  263. screen ( sensitive ( "Gesamt-Index" ))
  264. \#SysGem\# V1.20
  265. ----------------------------------------------------------------------
  266.  
  267. Strukturen:
  268.  
  269.  
  270.   \#AREA\#                - Beschreiben von Bildschirm-Bereichen
  271.   \#COOKIE\#              - Cookie-Struktur
  272.   \#DIALOG_INFO\#         - Info's ueber einen Dialog
  273.   \#DRAG_DROP\#           - Drag & Drop-Struktur
  274.   \#PARAMETER\#           - System-Daten via \#Init_GEM\#
  275.   \#RECT\#                - zur Beschreibung eines Rechtecks
  276.   \#WINDOW_INFO\#         - Ereignis-Struktur von SysGem
  277.  
  278. Funktionen:
  279.  
  280.  
  281.   \#AddSliderItem\#       - Element zur Sliderbox hinzunehmen
  282.   \#AddToList\#           - Zeile an Liste hinzufügen
  283.   \#Alert\#               - Alertbox darstellen
  284.   \#CalcArea\#            - Ausmasse eines Objekts berechnen
  285.   \#ChangeButton\#        - Text eines Buttons ändern
  286.   \#ChgInList\#           - Textzeile ändern/abfragen
  287.   \#ClearArea\#           - Bereich freigeben
  288.   \#ClearEditFields\#     - Editfelder eines Dialogs loeschen
  289.   \#CloseAllWindows\#     - Alle Fenster schliessen
  290.   \#CloseWindow\#         - Ein Fenster (versuchen) zu schliessen
  291.   \#CopyArea\#            - Bereich kopieren
  292.   \#CountLines\#          - Zeilen im Textfenster zählen
  293.   \#Cycle\#               - Circle-Buttons
  294.   \#DelDialog\#           - Dialog aus der Verwaltung nehmen
  295.   \#DelFlags\#            - Einzelne Objekt-Flags loeschen
  296.   \#DelInList\#           - Zeile in der Liste löschen
  297.   \#DelState\#            - Einzelne Objekt-Stati loeschen
  298.   \#DialPosXY\#           - Dialoge an Mausposition / zentriert?
  299.   \#Display\#             - Textdatei laden und darstellen
  300.   \#DoDialog\#            - Komplette Dialogdurchfuehrung
  301.   \#Exit_GEM\#            - Abmelden beim GEM
  302.   \#FrameTextColor\#      - FrameText Farbe setzen
  303.   \#FreeArea\#            - Bereich und Variable freigeben
  304.   \#GetCookie\#           - Cookie suchen
  305.   \#GetEditFields\#       - Alle Editfelder auslesen
  306.   \#GetFlags\#            - Abfragen, ob ein Flag gesetzt ist
  307.   \#GetHandle\#           - Fensterhandle anhand der Id ermitteln
  308.   \#GetState\#            - Abfragen, ob ein Status gesetzt ist
  309.   \#GetText\#             - Einzelnes Text-Feld auslesen
  310.   \#GetTopWindow\#        - Oberstes Fenster ermitteln
  311.   \#GetWindowId\#         - Fensterid anhand des Handles ermitteln
  312.   \#HandleSysGem\#        - Kontrolle an SysGem abgeben
  313.   \#HideCursor\#          - Cursor ausschalten
  314.   \#Init_GEM\#            - Anmelden beim GEM (\#Initialisierung\#)
  315.   \#IsMenuKey\#           - Menüshortcuts finden
  316.   \#IsVisible\#           - Fenster ganz sichtbar?
  317.   \#LinkImage\#           - Icon zum Iconifizieren anmelden
  318.   \#LinkList\#            - List an Fenster binden
  319.   \#LinkSlider\#          - Sliderbox anmelden
  320.   \#Listbox\#             - Listbox darstellen
  321.   \#LoadResource\#        - Resource-Datei laden
  322.   \#MoveScreen\#          - Bereich kopieren
  323.   \#NewArea\#             - Neue Variable anmelden
  324.   \#NewDialog\#           - Dialog in Verwaltung aufnehmen
  325.   \#OpenLogWindow\#       - Textfenster öffnen
  326.   \#OpenWindow\#          - Fenster oeffnen
  327.   \#PopUp\#               - Pop-Up darstellen
  328.   \#ProgramExist\#        - Schauen, ob SysGem-Programm existiert
  329.   \#RectIntersect\#       - Ueberlappung von Rechtecken pruefen
  330.   \#RedrawArea\#          - Bildschirmbereich neuzeichnen
  331.   \#RedrawDialog\#        - Objektbaum neuzeichnen
  332.   \#RedrawObj\#           - Einzelnes Objekt neuzeichnen
  333.   \#RedrawSliderBox\#     - Sliderbox neuzeichnen
  334.   \#RedrawWindow\#        - Komplettes Fenster neuzeichnen
  335.   \#RemDeskTopMenu\#      - Hauptmenue abmelden
  336.   \#RemoveCookie\#        - Cookie entfernen
  337.   \#RemoveDeskTop\#       - Eigenen Desktop entfernen
  338.   \#RestoreArea\#         - Mit SaveArea gesicherter Bereich wieder zurueckschreiben
  339.   \#RscAdr\#              - Resource-Adressen ermitteln
  340.   \#RscFree\#             - Resourcen-Speicher freigeben
  341.   \#SaveArea\#            - Bereich in Speicher kopieren
  342.   \#ScrollSlider\#        - Elemente scollen lassen
  343.   \#ScrollWindow\#        - Im Fenster den Inhalt scrollen lassen
  344.   \#SelectMenu\#          - Menuetitel manuell selektieren
  345.   \#SendMsg\#             - Welche gibt es?
  346.   \#SendSgMsg\#           - Nachricht an SysGem-Programm schicken
  347.   \#SetAccProc\#          - Acc-Behandlungsroutinen setzen
  348.   \#SetAlertTitle\#       - Überschrift der Alertbox setzen
  349.   \#SetButton\#           - Aussehen der Alert-Buttons setzen
  350.   \#SetCookie\#           - Cookie oder Wert setzen
  351.   \#SetDeskTopMenu\#      - Menuezeile setzen
  352.   \#SetDeskTop\#          - Eigenen Desktop anmelden
  353.   \#SetEditField\#        - Cursor in ein Editfeld setzen
  354.   \#SetFieldProc\#        - Proc. fuer Editfelder anmelden
  355.   \#SetFlags\#            - Einzelne Objekt-Flags setzen
  356.   \#SetGlobalFlags\#      - Mehrere Flags setzen
  357.   \#SetGlobalState\#      - Mehrere Stati setzen
  358.   \#SetIconColor\#        - Iconfarbe fuer Alertbox setzen
  359.   \#SetMessageProc\#      - Empfangsroutine fuer Nachrichten anmelden
  360.   \#SetProcTimer\#        - Timerfunktion anmelden
  361.   \#SetReturn\#           - Verhalten der Return-Taste setzen
  362.   \#SetSliderPos\#        - Position in Sliderbox setzen
  363.   \#SetState\#            - Einzelne Objekt-Stati setzen
  364.   \#SetText\#             - Text eines Objektes setzen
  365.   \#SetTimer\#            - Timer setzen
  366.   \#SetWinMaxSize\#       - Maximale Fenstergröße setzen
  367.   \#SetWinMinSize\#       - Minimale Fenstergröße setzen
  368.   \#SetWindowInfo\#       - Text der Info-Zeile setzen
  369.   \#SetWindowName\#       - Fenstertitel setzen
  370.   \#SetWindowParm\#       - Parameter eines Fensters setzen und abfragen
  371.   \#ShortCutColor\#       - Farbe der Shortcuts setzen
  372.   \#ShowCursor\#          - Cursor einschalten
  373.   \#TellKeyStrokes\#      - Tastendruecke weiterleiten?
  374.   \#TerminateSysGem\#     - SysGem verlassen
  375.   \#TopWindow\#           - Fenster nach oben holen
  376.   \#UnLinkSlider\#        - Sliderbox aus der Verwaltung nehmen
  377.   \#UseHighButtons\#      - Hohe Buttons in Alertboxen?
  378.   \#UseRightButton\#      - Rechte Maustaste benutzen?
  379.   \#WindowDialog\#        - Fensterdialog anmelden
  380.   \#do_qsort\#            - Zeilen sortieren
  381.   \#has_search\#          - appl_search vorhanden?
  382.   \#magx_avail\#          - Versionsnummer von Mag!X holen
  383.   \#mint_avail\#          - Versionsnummer von MiNT
  384.   \#objc_frame\#          - Rand eines Objekts berechnen
  385.   \#wcls\#                - Fenster löschen
  386.   \#wgetchar\#            - Zeichen an Position abfragen
  387.   \#wgetxy\#              - Cursor abfragen
  388.   \#winx_avail\#          - Winx da?
  389.   \#wposxy\#              - Cursor setzen
  390.   \#wprintf\#             - Schreiben ins Fenster
  391.   \#xPopUp\#              - Erweiterte PopUp's
  392.  
  393. \end
  394. screen ( sensitive ( "Konzept" ))
  395. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  396. ----------------------------------------------------------------------
  397.  
  398. Alle GEM-Programme haben eins gemeinsam: Sie rufen laufend evnt_multi
  399. auf und warten darauf, daß für sie eine Nachricht einfliegt, auf die
  400. dann reagiert werden soll. Ebenso ist es mit viel Aufwand verbunden,
  401. Dialoge in Fenster zu legen. Man muß sich um die Positionen kümmern,
  402. Mausklicks und Tasten abfragen und immer schauen, ob der Benutzer
  403. nicht irgendwas im Fenster gemacht hat...
  404.  
  405. SysGem verfolgt die Philosophie, daß weniger mehr ist. Sie sagen nur
  406. noch, ein Fenster soll aufgehen, und Sie geben an, wie dies aussehen
  407. soll. SysGem verwaltet dann die ganze Arbeit, verschiegen, vergrößern,
  408. fullen etc.
  409.  
  410. Für den/die Programmierer/in wäre es nur wichtig zu wissen, wenn der
  411. Benutzer etwas macht, auf das reagiert werden soll. Alle diese
  412. Funktionen stecken in der Funktion \#HandleSysGem\#. Fast alle Ver-
  413. waltungsaufgaben übernimmt diese Funktion. Warum soll man sich darum
  414. kümmern, auf welche Position die Slider zu setzen sind? Es reicht doch,
  415. wenn man weis, daß die Slider verschoben oder verändert wurden...
  416.  
  417. Für die Fenster und Dialoge geben Sie bei SysGem jeweils eine Funktion
  418. an (oder auch nicht), an die alle Benutzeraktivitäten gemeldet werden;
  419. Sie entscheiden dann, wie darauf reagiert werden soll.
  420.  
  421. Ein kleines Beispiel:
  422.  
  423.      Sie: Hallo Lib! Mach ein Fenster auf, in dem der Dialog xy liegen
  424.           soll und melde mit alle Aktionen an die Funktion z.
  425.   SysGem: Klar Mann!
  426.      Sie: Dann mach noch ein Fenster auf und lege den Text z7 da rein.
  427.           Kümmer dich um alles, bis der Benutzer das Fenster schließt
  428.           und lass mich in Ruhe!
  429.   SysGem: Ja, Master. Ist gebongt!
  430. Benutzer: Aha. Ein Fensterdialog! Nett. Was passiert wohl, wenn dich
  431.           den Button "mach was" anklicke? [Benutzer klickt...]
  432.   SysGem: Na endlich was zu tun! Ein Mausklick! Wohin eigentlich?
  433.           Ach so, Dialog xy. Oh, Button "mach was". Mal sehen, "Sie"
  434.           hat eine Funktion angegeben, also melden wir das mal.
  435.  
  436.           He, Funktion z! Der Benutzer hat "mach was" angeklickt!
  437.  Funk. z: Is ja gut. Aha, bei "mach was" soll der Dialog verlassen
  438.           werden. He, Lib! Mach das Fenster zu.
  439.   SysGem: Jo, geschlossen.
  440. Benutzer: Oh, ein Textfenster. Scrollen wir mal...
  441.   SysGem: Aha, Textfenster. Keine Funktion angegeben, also Arbeit
  442.           für mich. Wir scrollen, updaten...
  443. Benutzer: Is dat scheen!
  444.      Sie: Warum kompliziert, wenn man SysGem nehmen kann...
  445.  
  446.  
  447. Sie sehen, SysGem liefert nur Nachrichten an Handler. Sie können sich
  448. also auf das wesentliche des Programms konzentrieren, ohne auf die
  449. Verwaltung des GEM Rücksicht zu nehmen.
  450.  
  451.  
  452. \end
  453. screen ( sensitive ( "TRUE" ),
  454.          sensitive ( "FALSE" ))
  455. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  456. ----------------------------------------------------------------------
  457.  
  458. FALSE  entspricht dem Wert 0
  459. TRUE   entspricht dem Wert 1.
  460.  
  461. \end
  462.  
  463. screen ( sensitive ( "AREA" ))
  464. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  465. ----------------------------------------------------------------------
  466.  
  467. typedef struct
  468.   {
  469.     BOOL        used;
  470.     INT         x;
  471.     INT         y;
  472.     INT         w;
  473.     INT         h;
  474.     ULONG       size;
  475.     MFDB        mf;
  476.   } AREA;
  477.  
  478. Diese Struktur wird in SysGem dazu benutzt, um Bildschirmbereiche
  479. zu beschreiben.
  480.  
  481. -->  Diese Struktur darf nur gelesen, aber unter keinen Umständen
  482.      von Ihnen geändert werden!
  483.  
  484. -->  Sollten Sie dennoch einmal Werte ändern, kann es gut passieren,
  485.      dass Sie mit unerwarteten "Nebenwirkungen" rechnen müssen!
  486.  
  487. \end
  488.  
  489. screen ( sensitive ( "Wichtig" ))
  490. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  491. ----------------------------------------------------------------------
  492.  
  493. Bei der Arbeit mit SysGem gibt es ein paar Dinge, die Sie unbedingt
  494. beachten sollten, um unerwünschte Nebeneffekte zu vermeiden:
  495.  
  496. -  Benutzen Sie keine wind_... Funktionen; vor allem nicht wind_close
  497.    oder wind_delete; das Fenster würde zwar geschlossen, wäre für
  498.    SysGem aber noch geöffnet, was zu (fatalen) Schwierigkeiten führen
  499.    könnte.
  500.  
  501.    Das AES kann dann unter bestimmten Umständen das Honk-Bit setzen
  502.    und das Rembrandt-Flag negieren, was eine ungeordnete Terminierung
  503.    des Programms zur Folge hat (is'n Insider-Witz :-)  ).
  504.  
  505. -  Erhalten Sie von SysGem Nachrichten, dass ein Fenster geschlossen
  506.    werden soll, schliessen Sie es nicht eigenmächtig! SysGem schliesst
  507.    das Fenster von selbst.
  508.  
  509.    Die Funktion \#CloseWindow\# ist zwar für solche Zwecke da, aber
  510.    sollte nur dann eingesetzt werden, wenn es nicht anders geht.
  511.  
  512. -  Wegen der Iconifizierung sollten Sie sich nicht darauf verlassen,
  513.    dass ein bestimmtes Fenster auch ein bestimmtes Handle hat!
  514.  
  515.    Das Handle kann sich ändern! Deshalb greifen Sie immer mittels
  516.    \#GetHandle\# auf das Fenster zu!
  517.  
  518. \end
  519.  
  520. screen ( sensitive ( "Signale" ))
  521. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  522. ----------------------------------------------------------------------
  523.  
  524. Unter MiNT ist es kein Problem, einem Prozess eine Nachricht zu
  525. schicken, dass es terminieren soll. Ziehen Sie z. B. aus 'U:\\PROC'
  526. ein Programm auf den Papierkorb, so erhält es die Nachricht, sich zu
  527. verabschieden.
  528.  
  529. Dies kann unter GEM natürlich voll 'in die Hose' gehen, wenn sich ein
  530. Programm unkontrolliert verabschiedet und z.B. Dateien, Fenster usw.
  531. nicht geschlossen werden können.
  532.  
  533. SysGem installiert deshalb Routinen, die diese Nachrichten abfangen
  534. und leitet dann die geordnete Terminierung ein; soll heissen, die
  535. Funktion \#HandleSysGem\# kehrt zurück. So ist also gewährleistet,
  536. dass Ihr Programm sich ordnungsgemäss beenden kann.
  537.  
  538. Von SysGem werden folgende Signale abgefangen:
  539.  
  540. - SIGABRT --> Abort. Schwerer Fehler
  541.  
  542. - SIGQUIT
  543. - SIGTERM --> Prozess soll beendet werden
  544.  
  545. - SIGUSR1
  546. - SIGUSR2 --> Applikations-Signale. Müssen abgefangen werden, da sonst
  547.               der Prozess beendet wird. Wenn Sie die Signale selbst aus-
  548.               werten wollen, können Sie ja jederzeit eigene Routinen
  549.               installieren.
  550.  
  551. - SIGPIPE --> Wegen Drag & Drop
  552.  
  553. \end
  554.  
  555. screen ( sensitive ( "Registrierung" ))
  556. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  557. ----------------------------------------------------------------------
  558.  
  559. SysGem ist Keyware. Das heisst, Sie können SysGem ohne irgendwelche
  560. Einschränkungen nutzen. Jedoch erscheint sporadisch eine Meldung,
  561. die Sie daran erinnern soll, den Obulus zu entrichten.
  562.  
  563. Für 40 DM, die Sie bitte an den \#Autor\# richten, erhalten Sie einen
  564. Schlüssel für SysGem, der die Registriermeldung nicht mehr erscheinen
  565. lässt.
  566.  
  567. Ausserdem wird SysInfo dann Ihre SysGem-Version als registriert
  568. ausweisen.
  569.  
  570. Wenn Sie überweisen möchten, hier meine Bankverbindung:
  571.  
  572. Andreas Pietsch
  573.  
  574. Kto: 100-060466    BLZ: 57650010    Kreissparkasse Mayen
  575.  
  576. Vergessen Sie aber bitte nicht Ihren Absender!
  577.  
  578. ----------------------------------------------------------------------
  579. Wohnen Sie ausserhalb der BRD, so beachten Sie bitte, dass es sich die
  580. Banken gut bezahlen lassen, aus dem Ausland Geld einzuziehen.
  581. Die Gebühren können (aus Erfahrung) teilweise bis zu 50 % des
  582. Betrages erreichen!!
  583.  
  584. Im Zweifelsfalle senden Sie einfach Bargeld (in DM; als Wertbrief!)
  585. oder rechnen Sie die Gebühren dazu!
  586. ----------------------------------------------------------------------
  587.  
  588. Es lohnt sich ausserdem, sich auch für \#SysInfo\# registrieren
  589. zu lassen!
  590.  
  591. Leider kann ich es nicht verhindern, dass die Library als Keyware
  592. vertrieben wird. Es hat sich herausgestellt, dass wesentlich mehr
  593. Leute die Lib nutzen, Fragen stellen, anrufen, Updates haben wollen,
  594. aber nie den (ohnehin sehr geringen) Obulus entrichtet haben. Dieses
  595. finde ich nicht fair, also blieb uns nichts anderes übrig.
  596.  
  597. Ich helfe gerne weiter - natürlich auch, wenn Sie nicht registriert
  598. sind! Wenn Sie aber ettliche Male angerufen haben, ob ich das und
  599. jenes noch einbauen kann, dann mache ich das natürlich gerne; gehe aber
  600. davon aus, dass Ihnen dann die Lib auch gefällt - und erwarte auch
  601. irgendwie, dass Sie den Obulus entrichten.
  602.  
  603. Sollten Sie gequält werden von der Erkenntnis, dass die Library
  604. wesentlich mehr wert ist als 40 DM, können Sie Ihr Gewissen
  605. erleichtern: Schicken Sie einfach Zuwendungen in Form von Geschenken,
  606. Lottogewinne, Schecks, Plüschtiere (bitte keine echten Tiere),
  607. Danksagungen, Atari-TT's, Festplatten usw. an mich....
  608.  
  609.  
  610. \end
  611.  
  612. screen ( sensitive ( "Autor" ),
  613.          sensitive ( "Andreas_Pietsch" ))
  614. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  615. ----------------------------------------------------------------------
  616.  
  617. Sollten Sie eine Funktion vermissen, einen Wunsch, eine Anregung oder
  618. vielleicht eine Fehlermeldung haben, so können Sie sich direkt an mich
  619. wenden. Fehler werden sofort beseitigt, sinnvolle Wünsche oder
  620. Anregungen können allerdings schon mal ein paar Tage dauern.
  621.  
  622. Erreichen können Sie mich auf folgenden elektronischen Wegen:
  623.  
  624. Telefon  +49-2651-48833
  625. Telefax  +49-2651-43344
  626.  
  627. Maus     WI2
  628. Internet Andreas_Pietsch@wi2.maus.de
  629.  
  630. oder aber per Snail-Mail:
  631.  
  632. Andreas Pietsch
  633. Schillerstr. 24
  634. 56727 Mayen, FRG
  635.  
  636. Da ich die Library so umfangreich und komfortabel wie möglich
  637. gestalten möchte, sollten Sie sich also nicht scheuen, mir Ihre
  638. Wünsche mitzuteilen.
  639.  
  640. Siehe auch: \#Registrierung\#
  641.  
  642. \end
  643.  
  644. screen ( sensitive ( "Thorsten_Bergner" ),
  645.          sensitive ( "SysInfo" ))
  646. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  647. ----------------------------------------------------------------------
  648.  
  649. Kurzinformationen zu SysInfo V2.00
  650. גגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגג
  651.  
  652. SysInfo gibt einen Einblick in die Hard- und Softwarefunktionen
  653. des Atari und bietet darüber hinaus noch eine Menge Zusatzfunk-
  654. tionen für Programmierer und Interessierte an.
  655.  
  656. Die wichtigsten Werte werden über einen Programmtakt ständig
  657. aktualisiert. Ansonsten reicht ein Klick auf 'Update' und das
  658. Fenster wird aufgefrischt.
  659.  
  660. Ein kurzer Überblick...
  661.  
  662. - SysInfo ist Keyware und kostet 15 DM
  663. - SysInfo läuft mit allen offiziellen ROM- und RAMTOS Versionen,
  664.   auch mit KAOS, Mag!X und MiNT/MTOS
  665. - Unterstützt alle Grafikauflösungen >= 640*200 (SW/Farbe)
  666. - Lässt sich als Programm oder Accessory benutzen
  667.  
  668. - Speicherinformationen über ST- und/oder TT-RAM
  669. - Hardwareinformationen über Maschine, CPU und FPU
  670. - Cache, Takt und Blitter-Funktionen
  671. - Laufwerks- und Treiberinformationen
  672. - Anzeige Bootlaufwerk
  673. - System- bzw. Versionsinformationen
  674. - Netzwerkübersicht
  675. - Cookieinformationen mit Kommentar
  676. - XBRA-Informationen
  677. - Harddiskinformationen
  678. - Grafikinformationen
  679. - Anzeige der laufenden SysGem-Prozesse
  680. - Eine Eckuhr ist vorhanden
  681. - XSSI Unterstützung
  682. - Ausgabe aller Informationen in eine Datei
  683.  
  684.  
  685. Die Funktionen...
  686. גגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגג-----
  687.  
  688. Info
  689. ----
  690. - Anzeige der Version und des Autors
  691.  
  692. Ausgabe
  693. -------
  694. - Ausgabe aller Werte von SysInfo als Datei ins Klemmbrett. Falls
  695.   das Klemmbrett nicht vorhanden sein sollte, wird eins angelegt.
  696.   Die Ausgabe funktioniert nur mit einer registrierten Version.
  697.  
  698. System
  699. ------
  700. - Maschine (ST, STE, BOOK, MSTE, TT, F030)
  701. - CPU      (68000, 68010, 68020, 68030, 68040)
  702. - FPU      (SFP004, 68881, 68882, 68040)
  703. - Versionsübersicht
  704. - Videomodus
  705. - Netzwerkübersicht
  706. - Speicherkontrolle
  707.  
  708. - Cache. Hiermit kann ein vorhandener Cachespeicher ein- oder
  709.   ausgeschaltet werden
  710.  
  711.   68000 : - ST   Konfig Hypercache Turbo+ ( Soundchip Port A/Bit 6 )
  712.           - STE  Konfig Hypercache II     ( Adr.0xFFBE01 )
  713.           - MSTE Konfig SCU Chip          ( Adr.0xFF8E21 )
  714.   68010 : - Kein Cache. Das Feld wird gesperrt
  715.   68020 : - Instruction Cache ein/aus
  716.   68030 : - Data+Instruction Cache ein/aus
  717.   68040 : - Data+Instruction Cache ein/aus
  718.  
  719. - Takt. Hiermit kann der CPU Takt beim MegaSTE und Falcon030 zwischen
  720.   16 und 8 MHz umgeschaltet werden
  721.  
  722. - Blitter. Ist ein Blitter eingebaut, kann er ein- oder ausgeschaltet
  723.   werden
  724.  
  725. - Blittertakt. Hiermit kann der Blittertakt beim Falcon030 zwischen
  726.   16 und 8 MHz umgeschaltet werden
  727.  
  728. - Laufwerke A-6. Ein selektierter Buchstabe zeigt, das das Laufwerk
  729.   angemeldet ist. Zusatzinformationen erhält man, wenn man mit der
  730.   Maus, einen selektierten Laufwerksbutton anklickt
  731.  
  732. - Anzeige des Bootlaufwerkes
  733.  
  734. Memory
  735. ------
  736. - Anzeige des gesamten und freien Speichers in Byte (ST- und TT-RAM)
  737. - Anzeige der letzten Speicheranforderung
  738.  
  739. Vektor
  740. ------
  741. - Anzeige von Systemvektoren, VBlankvektoren und Systemadressen
  742.  
  743. Cookie
  744. ------
  745. - Ausgabe der Cookie Tabelle mit Kommentar. Cookies, die nicht
  746.   kommentiert sind, geben ein '???' aus
  747.  
  748. - Zur Zeit sind folgende Cookies im Programm kommentiert:
  749.  
  750.   Atari  : _AKP, _CPU, _FDC, _FLK, _FPU, _FRB, _IDT, _INF, _MCH, _NET,
  751.            _OOL, _SLM, _SND, _SWI, _VDO
  752.  
  753.   Andere : AFnt, AlHP, AHVR, AMCG, APGM, BIGS, BLOW, CFIX, CHAM, CHNG,
  754.            CLCK, CM16, COOK, CRIT, CSMD, CTCH, cVDI, DATE, DATL, DAWN,
  755.            DBFX, DEPI, DYNL, EdDI, ENVR, F117, FIX2, FLTP, FOse, FSEL,
  756.            FSER, FSMC, FSmp, FxDR, FxOP, GDEV, GMNI, HDJR, HFIX, HSnd,
  757.            IMNE, INSJ, INXR, JFTP, JMLS, KAOS, LAWC, M128, macc, MADD,
  758.            MagC, MagX, MCWR, MDIA, MFNT, MGEM, MiNT, MkJr, MMAC, MOGR,
  759.            MPRO, MSPO, MUPF, NCLN, NFnt, NLdr, NOVA, NVDI, OFLS, OPPM,
  760.            OSTT, OVER, PBUG, PDOS, PMMU, PRTR, PTOS, PV__, RDCT, RFLX,
  761.            RSpd, RSVE, RSVF, RWIN, SCRN, SCRW, SCSI, SF71, SFA^, SFMN,
  762.            SMAL, SM00, SM01, SM02, SMTT, SPEX, Spol, SRYS, SSND, STRX,
  763.            SYMB, SWAP, SwTm, TCRB, TIME, TFIX, TMon, THNX, TSWP, TTTF,
  764.            Typ1, UFSL, UIS3, USHD, USRS, VFIX, VFNT, VGAS, VMEM, VRAM,
  765.            VSCR, WDOG, WEGA, WFSL, WINX, WPRO, WrAp, XDsk, XFRB, XFS1,
  766.            XHDI, xRmt, XSDD, XSSI, zDCF, _T30, 4PRN
  767.  
  768. XBRA
  769. ----
  770. - Ausgabe der XBRA Vektor Tabelle. Die Funktion ist nur anwählbar, wenn
  771.   keine Memoryprotection aktiv ist
  772.  
  773. HDInfo
  774. ------
  775. - Komplette Übersicht der Festplattenbelegung
  776.  
  777. Grafik
  778. ------
  779. - Informationen über Farben, normalen und virtueüllen Bildschirm
  780.  
  781. SysGem
  782. ------
  783. - Anzeige der laufenden Prozesse die mit der SysGem Lib geschrieben
  784.   wurden. Diese Anzeige erscheint nur, wenn entweder Mag!X, MultiTOS
  785.   oder eine GEM Version >= 4.00 installiert ist.
  786.  
  787. Option
  788. ------
  789. - Programm-Registrierung
  790. - Einstellung des Programmtakt's (nur in registrierter Version)
  791. - Eckuhr ein/aus
  792. - Flag für Fenster/Dialog an Mausposition oder zentriert
  793.  
  794.  
  795. Schlussbemerkung...
  796. גגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגג-----
  797. - Bei Schwierigkeiten oder Problemen mit SysInfo selber oder anderen
  798.   Programmen und Accessoir's, bitte ich um genaue Informationen des
  799.   Fehlers, der Systemkonfiguration und der Versionsnummer von SysInfo.
  800.  
  801. - Mein besonderer Dank geht an Andreas Pietsch, Frank Bartels,
  802.   Dirk Haun, Werner Brandt, Axel Schermann und Dirk Johannwerner.
  803.  
  804. - Erstellt wurde das Programm mit dem Pure C EWS V1.20 (ASH) und die
  805.   Resource mit Interface V2.20. Für die GEM Funktionen wurde die
  806.   SysGem-Library von Andreas Pietsch (Es kann nur einen geben...)
  807.   benutzt.
  808.  
  809. - Das Programm ist frei von rechten Dritter, darf aber nur zusammen mit
  810.   diesem Copyrightvermerk weitergegeben werden. Die Benutzung des Prog-
  811.   ramms ist auf eigene Gefahr. Für Schäden an Hard- oder Software durch
  812.   das Programm oder dessen Benutzung, übernehme ich keine Haftung.
  813.  
  814. - Ein Versand über PD-Vertriebe bedarf meiner schriflichen Genehmigung.
  815.  
  816. - Überweisung per Verrechnungsscheck, oder auf mein Konto bei der Berliner
  817.   Bank (BLZ 10020000 / Konto-Nr 2656071200)
  818.  
  819.  
  820. Anschrift und EMail...
  821. גגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגג-----
  822. - Thorsten Bergner
  823.   Mainzer Strasse 55
  824.   D-12053 Berlin
  825.  
  826. - Tel   : 49-30-6249904
  827. - EMail : MAUS     @ B
  828.           FIDO     2:2410/409.1
  829.           GERNET   21:100/9514.1
  830.           INTERNET Thorsten_Bergner@schiele-ct.de
  831.  
  832.  
  833. \end
  834.  
  835. screen ( sensitive ( "RECT" ))
  836. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  837. ----------------------------------------------------------------------
  838.  
  839. Die Struktur RECT hat folgende Struktur:
  840.  
  841. typedef struct
  842.   {
  843.     INT  x;     /* x-Koordinate des Rechtecks */
  844.     INT  y;     /* y-Koordinate des Rechtecks */
  845.     INT  w;     /* Breite des Rechtecks       */
  846.     INT  h;     /* Höhe des Rechtecks         */
  847.   } RECT;
  848.  
  849.  
  850. \end
  851.  
  852. screen ( sensitive ( "PARAMETER" ),
  853.          sensitive ( "vdi_handle" ),
  854.          sensitive ( "charw" ),
  855.          sensitive ( "charh" ),
  856.          sensitive ( "boxw" ),
  857.          sensitive ( "boxh" ),
  858.          sensitive ( "appl_id" ),
  859.          sensitive ( "xmax" ),
  860.          sensitive ( "ymax" ),
  861.          sensitive ( "desktop" ),
  862.          sensitive ( "aes_version" ),
  863.          sensitive ( "tos_version" ),
  864.          sensitive ( "bitplanes" ),
  865.          sensitive ( "max_colors" ),
  866.          sensitive ( "act_colors" ),
  867.          sensitive ( "color_avail" ),
  868.          sensitive ( "acc_entry" ),
  869.          sensitive ( "multitask" ),
  870.          sensitive ( "magx" ),
  871.          sensitive ( "magx_rel" ),
  872.          sensitive ( "mint" ),
  873.          sensitive ( "winx" ),
  874.          sensitive ( "search" ),
  875.          sensitive ( "agi" ),
  876.          sensitive ( "AGI_0" ),
  877.          sensitive ( "AGI_3" ),
  878.          sensitive ( "AGI_4" ),
  879.          sensitive ( "draw_3d" ))
  880. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  881. ----------------------------------------------------------------------
  882.  
  883.  
  884. Die Struktur PARAMETER hat folgende Struktur:
  885.  
  886. typedef struct
  887.   {
  888.     INT         vdi_handle;
  889.     INT         charw;
  890.     INT         charh;
  891.     INT         boxw;
  892.     INT         boxh;
  893.     INT         appl_id;
  894.     INT         xmax;
  895.     INT         ymax;
  896.     \#RECT\#        desktop;
  897.     INT         bitplanes;
  898.     INT         max_colors;
  899.     INT         act_colors;
  900.     BOOL        color_avail;
  901.     INT         acc_entry;
  902.     BOOL        multitask;
  903.     INT         aes_version;
  904.     UINT        tos_version;
  905.     INT         magx;
  906.     INT         magx_rel;
  907.     INT         mint;
  908.     BOOL        winx;
  909.     BOOL        search;
  910.     INT         agi;
  911.     BOOL        draw_3d;
  912.   } PARAMETER;
  913.  
  914.  
  915. - vdi_handle    Enthält das Handle der VDI-Workstation, die für Ihr
  916.                 Programm eröffnet wurde. Wenn Sie in Ihrem Programm
  917.                 Ausgaben über das VDI machen wollen, sollten Sie
  918.                 'vdi_handle' übergeben.
  919.  
  920. - charw         Enthält die Breite eines Zeichens in Pixeln.
  921.  
  922. - charh         Enthält die Höhe eines Zeichens in Pixeln.
  923.  
  924. - boxw          Enthält die Breite einer Zeichenbox in Pixeln.
  925.  
  926. - boxh          Enthält die Höhe eines Zeichenbox in Pixeln.
  927.  
  928. - appl_id       Enthält die Identifikationsnummer, welches das AES
  929.                 Ihrem Programm zugeordnet hat.
  930.  
  931. - xmax          Enthält die Breite des Bildschirms in Pixeln.
  932.  
  933. - ymax          Enthält die Höhe des Bildschirms in Pixeln.
  934.  
  935. - desktop       ist eine \#RECT\#-Struktur und enthält die Ausmasse
  936.                 des Desktops, auf dem Sie zeichnen dürfen, also z. B.
  937.                 abzüglich der Menüzeile.
  938.  
  939. - aes_version   enthält die Versionsnummer des AES. Einige Funktionen
  940.                 des AES stehen z. B. erst ab einer bestimmten
  941.                 Versionsnummer zur Verfügung.
  942.  
  943.                 Die Versionsnummer wird in Hex zurückgegeben. 0x0399
  944.                 würde also eine Version 3.99 bedeuten.
  945.  
  946. - tos_version   enthält die Versionsnummer des TOS.
  947.  
  948.                 Die Versionsnummer wird in Hex zurückgegeben. 0x0205
  949.                 würde also eine Version 2.05 bedeuten.
  950.  
  951. - bitplanes     gibt an, wieviel Bit pro Pixel zur Farbdarstellung
  952.                 benutzt werden.
  953.  
  954. - max_colors    gibt die Anzahl der verfügbaren Farben an. Eine 0
  955.                 besagt, dass True-Color verfügbar ist.
  956.  
  957. - act_colors    gibt die Anzahl der Farben an, die gleichzeitig aus
  958.                 einer Tabelle von 'max_colors' Farben darge- stellt
  959.                 werden können.
  960.  
  961. - color_avail   ist \#TRUE\#, wenn mehr als 2 Farben verfügbar sind.
  962.  
  963. - acc_entry     hat den Wert -2 wenn Ihr Programm als Programm
  964.                 gestartet wurde. Sie hat einen Wert grösser -1, wenn
  965.                 Ihr Programm als ACC gestartet wurde und den Wert -1,
  966.                 wenn während der Initialisierung was schief ging, z.
  967.                 B. kein ACC-Slot mehr frei war.
  968.  
  969. - magx          Enthält die Versionsnummer von Mag!X oder 0, wenn
  970.                 Mag!X nicht installiert ist.
  971.  
  972. - magx_rel      Enthält die Releasenummer von Mag!X oder 0, wenn
  973.                 Mag!X nicht installiert ist.
  974.  
  975. - mint          Enthält die Versionsnummer von MiNT oder 0, wenn
  976.                 MiNT nicht installiert ist.
  977.  
  978. - winx          Ist \#TRUE\#, wenn Winx >= 2.2 installiert ist.
  979.  
  980. - search        Ist \#TRUE\#, wenn appl_search vorhanden ist.
  981.  
  982. - agi           Hat folgende Werte:
  983.  
  984.                 AGI_0   appl_getinfo ist nicht vorhanden
  985.                 AGI_3   appl_getinfo nur bis Par. 3.
  986.                 AGI_4   appl_getinfo kann voll genutzt werden.
  987.  
  988. - draw_3d       Ist \#TRUE\#, wenn die 3D-Buttons gezeichnet wird.
  989.  
  990. \end
  991.  
  992.  
  993. screen ( sensitive ( "Init_GEM" ))
  994. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  995. ----------------------------------------------------------------------
  996.  
  997. Prototyp: INT Init_GEM ( \#PARAMETER\# *parm,
  998.                          BYTE      *acc_name,
  999.                          LONG      prg_id,
  1000.                          BYTE      *prg_name,
  1001.                          LONG      user_id,
  1002.                          BYTE      *name,
  1003.                          LONG      key );
  1004.  
  1005.  
  1006. Initialisiert die Library und meldet das Programm beim GEM an.
  1007.  
  1008. Die Parameter haben folgende Bedeutung:
  1009.  
  1010. - parm          In dieser Struktur erhalten Sie Daten zurueck,
  1011.                 die fuer Ihr Programm wichtig sind.
  1012.                 Es wird ein Zeiger auf die Struktur \#PARAMETER\#
  1013.                 erwartet.
  1014.  
  1015.                 -->  NULL ist __nicht__ zulaessig!
  1016.  
  1017. - acc_name      Uebergeben Sie hier den Namen Ihres Programm, der -
  1018.                 falls Ihr Programm als ACC gestartet wurde - in der
  1019.                 Acc-Leiste stehen soll.
  1020.  
  1021.                 \#acc_entry\# enthaelt einen Wert != -2, wenn
  1022.                 dem so ist.
  1023.  
  1024.                 Wollen Sie verhindern, dass Ihr Programm als ACC
  1025.                 gestartet wird, uebergeben Sie einfach einen leeren
  1026.                 String ("").
  1027.  
  1028. - prg_id        Hier geben Sie einen 4-Zeichen-Code an, der Ihr
  1029.                 Programm identifiziert. So hat SysInfo z. B. die
  1030.                 Kennung 'SINF'.
  1031.  
  1032.                 Da diese Kennung eindeutig sein muss, sollten Sie mir
  1033.                 jede Kennung mitteilen, wenn Sie vorhaben, Ihr
  1034.                 Programm freizugeben!
  1035.  
  1036.                 Nur so kann gewaehrleistet werden, dass nicht zwei
  1037.                 verschiedene Programme die gleiche Kennung besizten.
  1038.                 Wenden Sie sich dazu einfach an den \#Autor\#.
  1039.  
  1040. - prg_name      Geben Sie hier den Namen des Programms an. Erlaubt
  1041.                 sind bis zu 30 Zeichen. Der Programmname kann z. B.
  1042.                 von \#SysInfo\# erfragt werden und ist logischerweise
  1043.                 wesentlich aussagekraeftiger als der 4-Zeichen-Code.
  1044.  
  1045. - user_id       Ist ein 4-Zeichen-Code und repraesentiert den Autor.
  1046.                 Die Kennung koennen Sie selbst vergeben (es sei denn,
  1047.                 sie existiert schon...).
  1048.  
  1049. - name          Hier uebergeben Sie Ihren eigenen Namen (Vor- und
  1050.                 Nachname) als String.
  1051.  
  1052. - key           Wenn Sie sich fuer SysGem haben registrieren lassen,
  1053.                 erhalten Sie von mir einen Schluessel. In der
  1054.                 registrierten Version erscheinen dann die Hinweise,
  1055.                 dass Sie sich doch registrieren lassen sollen,
  1056.                 natuerlich nicht mehr.
  1057.  
  1058.                 Haben Sie noch keinen Schluessel, uebergeben Sie
  1059.                 einfach eine 0, und lesen Sie mehr ueber die
  1060.                 \#Registrierung\#.
  1061.  
  1062. ----------------------------------------------------------------------
  1063.  
  1064. Rueckgabewerte: (siehe auch \#Initialisierung\#)
  1065.  
  1066. < 0     Init_GEM gibt -1 zurueck, falls das Programm sich schon im
  1067.         Speicher befindet; Das AES wird _nicht_ initialisiert und
  1068.         Ihr Programm wird _nicht_ beim GEM angemeldet.
  1069.         Ihr Programm _muss_ terminieren!
  1070.  
  1071.   0     Der Rueckgabewert ist 0, wenn das Programm nicht beim GEM
  1072.         angemeldet werden konnte.
  1073.  
  1074. > 0     Bei fehlerfreier Ausfuehrung wird ein Wert groesser 0 zurueck-
  1075.         gegeben. Nur dann duerfen Sie Funktionen aus SysGem nutzen!
  1076.  
  1077. ----------------------------------------------------------------------
  1078.  
  1079. Ein Aufruf koennte zum Beispiel so aussehen:
  1080.  
  1081. PARAMETER par;
  1082.  
  1083. if ( Init_GEM ( &par, "  Demo Acc ", 'DEMO', "SysGem-Demo", 'ANPI',
  1084.      "Andreas Pietsch", 0L ) > 0 )
  1085.   {
  1086.     ...
  1087.   }
  1088.  
  1089. \end
  1090.  
  1091. screen ( sensitive ( "magx_avail" ))
  1092. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1093. ----------------------------------------------------------------------
  1094.  
  1095. Prototyp: ULONG magx_avail ( VOID );
  1096.  
  1097.  
  1098. Liefert die Versionsnummer von Magix. Dabei befindet sich im oberen
  1099. Wort die Releasenummer und im unteren Wort die Versionsnummer. Die
  1100. Funktion liefert 0, wenn Magix nicht installiert ist.
  1101.  
  1102.  
  1103. \end
  1104.  
  1105.  
  1106. screen ( sensitive ( "mint_avail" ))
  1107. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1108. ----------------------------------------------------------------------
  1109.  
  1110. Prototyp: UINT mint_avail ( VOID );
  1111.  
  1112.  
  1113. Liefert die Versionsnummer von MiNT oder 0, wenn MiNT nicht
  1114. installiert ist.
  1115.  
  1116. \end
  1117.  
  1118.  
  1119. screen ( sensitive ( "winx_avail" ))
  1120. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1121. ----------------------------------------------------------------------
  1122.  
  1123. Prototyp: BOOL winx_avail ( VOID );
  1124.  
  1125.  
  1126. Liefert \#TRUE\#, wenn Winx >= 2.2 installiert ist.
  1127.  
  1128. \end
  1129.  
  1130.  
  1131. screen ( sensitive ( "has_search" ))
  1132. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1133. ----------------------------------------------------------------------
  1134.  
  1135. Prototyp: BOOL has_search ( VOID );
  1136.  
  1137.  
  1138. Liefert \#TRUE\#, wenn appl_search zur Verfuegung steht.
  1139.  
  1140. \end
  1141.  
  1142.  
  1143. screen ( sensitive ( "FrameTextColor" ))
  1144. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1145. ----------------------------------------------------------------------
  1146.  
  1147. Prototyp: VOID FrameTextColor ( INT color );
  1148.  
  1149.  
  1150. Setzt die Farbe für die Frame-Boxen, bzw. dessen Text. Diese Farbe
  1151. wird auch fuer den Text eines Iconifizierten Fensters gebraucht.
  1152.  
  1153. \end
  1154.  
  1155. screen ( sensitive ( "ShortCutColor" ))
  1156. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1157. ----------------------------------------------------------------------
  1158.  
  1159. Prototyp: VOID ShortCutColor ( INT color );
  1160.  
  1161.  
  1162. Setzt die Farbe für die Shortcuts. Steht am Anfang auf RED.
  1163.  
  1164. \end
  1165.  
  1166. screen ( sensitive ( "LinkImage" ))
  1167. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1168. ----------------------------------------------------------------------
  1169.  
  1170. Prototyp: VOID LinkImage ( LONG win_id, BITBLK *image, UBYTE *text );
  1171.  
  1172.  
  1173. Setzt fuer ein Fenster mit der Id 'win_id' ein Image, dass bei der
  1174. Iconifizierung verwendet wird.
  1175.  
  1176. 'text' ist ein max. 8 Zeichen langer String, der dann unter dem Image
  1177. erscheint.
  1178.  
  1179. \end
  1180.  
  1181.  
  1182. screen ( sensitive ( "xPopUp" ))
  1183. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1184. ----------------------------------------------------------------------
  1185.  
  1186. Prototyp: INT xPopUp ( OBJECT *tree, INT obj, OBJECT *tree2, INT start,
  1187.                                                              INT *first );
  1188.  
  1189.  
  1190. Baut auf \#PopUp\# auf. Stellt ein PopUp dar, und uebernimmt nach
  1191. Abschluss den Text des angeklickten Objekts und schreibt ihn dann
  1192. wieder in 'obj'. So kann man sich eine Menge Arbeit sparen.
  1193.  
  1194. Die Parameter:
  1195.  
  1196. - tree    Zeiger auf den dialog, in dem der Button liegt, der
  1197.           das Popup ausloest.
  1198.  
  1199. - obj     Die Objektnummer dieses Buttons.
  1200.  
  1201. - tree2   Zeiger auf den Baum fuer das Popup.
  1202.  
  1203. - start   Nummer des Objekte, das die gesamten Texte umschliesst.
  1204.  
  1205. - first   Nummer des Objektes, das unter der Maus erscheinen
  1206.           soll.
  1207.  
  1208. \end
  1209.  
  1210.  
  1211. screen ( sensitive ( "Listbox" ))
  1212. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1213. ----------------------------------------------------------------------
  1214.  
  1215. Prototyp: INT Listbox ( UBYTE *strings, INT count, INT len, OBJECT *tree,
  1216.                                                             INT    box );
  1217.  
  1218.  
  1219. Stellt eine Listbox dar. Dabei gibt es zwei Möglichkeiten. Einerseits
  1220. kann man einen Speicherbereich wie bei \#LinkSlider\# angeben, der
  1221. dann in der Listbox dargestellt wird. Andererseits kann man, wenn
  1222. 'count' und 'len' auf 0 gesetzt sind, einen String uebergeben, wobei
  1223. die einzelnen Einträge mit '|' getrennt sind.
  1224.  
  1225. Die Funktion schreibt in 'box' automatisch den Text, den der Benutzer
  1226. ausgewaehlt hat und liefert die Nummer des angeklickten Textes
  1227. zurueck.
  1228.  
  1229. Parameter:
  1230.  
  1231. - strings    Zeiger auf den Speicherbereich oder auf den String.
  1232.  
  1233. - count      Anzahl der Eintraege oder 0.
  1234.  
  1235. - len        Länge eines Eintrags oder 0.
  1236.  
  1237. - tree       Zeiger auf den Baum, in dem sich der Button befindet,
  1238.              der die Listbox ausloest.
  1239.  
  1240. - box        Die Objektnummer dieses Buttons.
  1241.  
  1242.  
  1243. \end
  1244.  
  1245. screen ( sensitive ( "Exit_GEM" ))
  1246. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1247. ----------------------------------------------------------------------
  1248.  
  1249. Prototyp: VOID Exit_GEM ( VOID );
  1250.  
  1251.  
  1252. Diese Funktion meldet alle noch offenen Fenster ab, gibt den von Lib
  1253. benutzen Speicher wieder frei, entfernt evtl. noch vorhandene
  1254. Resourcen aus dem Speicher und meldet das Programm beim GEM ab.
  1255.  
  1256. Diese Funktion muss am Ende Ihres Programms aufgerufen werden.
  1257. Allerdings nur dann, wenn \#Init_GEM\# einen Wert grösser 0 geliefert
  1258. hat.
  1259.  
  1260. \end
  1261.  
  1262. screen ( sensitive ( "LoadResource" ))
  1263. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1264. ----------------------------------------------------------------------
  1265.  
  1266. Prototyp: UINT LoadResource ( BYTE *rsc_name );
  1267.  
  1268.  
  1269. Lädt die angegebene Resourcedatei ein und liefert die Länge der
  1270. Resource in Bytes zurück, wenn das Einlesen geklappt hat, 0 sonst.
  1271.  
  1272. \end
  1273.  
  1274. screen ( sensitive ( "RscAdr" ))
  1275. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1276. ----------------------------------------------------------------------
  1277.  
  1278. Prototyp: OBJECT *RscAdr ( INT tree_type, INT index );
  1279.  
  1280.  
  1281. Nachdem mit \#LoadResource\# eine Resourcedatei geladen wurde, können
  1282. mit dieser Funktion die Adressen der verschiedenen Bäume und Objekte
  1283. bestimmt werden.
  1284.  
  1285. Wollen Sie z. B. die Adresse eines Dialogs ermitteln, übergeben Sie
  1286. für 'tree_type' einfach R_TREE. Die anderen Parameter stimmen mit
  1287. denen überein, wie sie in AES.H definiert sind.
  1288.  
  1289. \end
  1290.  
  1291. screen ( sensitive ( "RscFree" ))
  1292. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1293. ----------------------------------------------------------------------
  1294.  
  1295. Prototyp: VOID RscFree ( VOID );
  1296.  
  1297.  
  1298. Diese Funktion gibt den Speicherplatz, in den die Resource-Datei
  1299. geladen wurde, wieder frei. Diese Funktion wird auch automatisch
  1300. von SysGem bei \#Exit_GEM\# aufgerufen.
  1301.  
  1302. \end
  1303.  
  1304. screen (  sensitive ( "Objecttypen"    ),
  1305.          sensitive ( "SPECIAL_BUTTON" ),
  1306.          sensitive ( "SPECIAL_TEXT"   ),
  1307.          sensitive ( "SPECIAL_FRAME"  ))
  1308. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1309. ----------------------------------------------------------------------
  1310.  
  1311. - SPECIAL_BUTTON - Erweiterte Nummer 18
  1312.  
  1313.   Nur einsetzbar bei Button-Objekten (GEM-Objektnummer 26)!
  1314.  
  1315.   Der Button wird in Abhängigkeit der Objekt-Flags und des Objekt-
  1316.   Status gezeichnet. Dabei kommt folgenden Flags bzw. Kombinationen
  1317.   eine besondere Bedeutung zu:
  1318.  
  1319.   - SELECTABLE
  1320.  
  1321.     Zeichnet eine ankreuzbare Box. Das Kreuz wird in Abhängigkeit des
  1322.     SELECTED-Statusflags gezeichnet. Der Buttontext wird rechts neben
  1323.     der Box angeordnet. Planen Sie ca. 3 Zeichen mehr Platz ein für
  1324.     den Button.
  1325.  
  1326.   - SELECTABLE und EXIT
  1327.  
  1328.     Es wird ein 'normaler' Button dargestellt, ggf. mit Tastatur-
  1329.     Shortcut.
  1330.  
  1331.   - SELECTABLE und RADIOBUTTON
  1332.  
  1333.     Es wird ein runder Knopf gezeichnet, und gefüllt, wenn SELECTED
  1334.     als Status gegeben ist. Der Buttontext wird rechts neben dem
  1335.     Knopf angeordnet. Planen Sie ca. 3 Zeichen mehr Platz ein für
  1336.     dieses Objekt.
  1337.  
  1338. - SPECIAL_TEXT - Erweiterte Nummer 19
  1339.  
  1340.   Nur mit String-Objekt (GEM-Objektnummer 28)!
  1341.  
  1342.   Der String wird in Abhängigkeit des Objektstatus ausgegeben:
  1343.  
  1344.   - SELECTED
  1345.  
  1346.     Der String wird Schwarz hinterlegt.
  1347.  
  1348.   - DISABLED
  1349.  
  1350.     Der String wird in 'heller' Schrift gezeichnet und ist auch
  1351.     nicht anwählbar!
  1352.  
  1353.   - OUTLINED
  1354.  
  1355.     Der Text wird zweifach unterstrichen.
  1356.  
  1357.   - SHADOWED
  1358.  
  1359.     Der String wird einfach unterstrichen.
  1360.  
  1361.   - WHITEBAK
  1362.  
  1363.     Es wird Fettschrift verwendet.
  1364.  
  1365.   - CHECKED
  1366.  
  1367.     Es wird die Iconschrift verwendet.
  1368.  
  1369.  
  1370. - SPECIAL_FRAME - Erweiterte Nummer 20
  1371.  
  1372.   Macht aus einem Button-Objekt (GEM-Objektnummer 26) einen Rahmen.
  1373.   Dabei wird der Buttontext auf die obere Linie der Box geschrieben:
  1374.  
  1375.   +-Titelbox--------+
  1376.   |                 |
  1377.   |                 |
  1378.   |                 |
  1379.   |                 |
  1380.   +גגגגגגגגגגגגגגגגג+
  1381.  
  1382.   Kann dazu verwendet werden, um Felder von Radiobuttons voneinander
  1383.   zu trennen, oder sonstige Gliederungen in der Dialogbox zu machen.
  1384.  
  1385.   Das Objekt sollte _nicht_ den SELECTABLE Status haben. Der Text
  1386.   wird mit den Effekten wie bei SPECIAL_TEXT gezeichnet, allerdings
  1387.   wird WHITEBAK nicht unterstützt.
  1388.  
  1389.   Zusätzlich kann durch Angabe von  CROSSED  der String zentriert
  1390.   werden.
  1391.  
  1392.   \#Tastatur\#
  1393.  
  1394. \end
  1395.  
  1396. screen ( sensitive ( "Tastatur" ))
  1397. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1398. ----------------------------------------------------------------------
  1399.  
  1400. Grundsätzlich gilt für alle erweiterten Typen ausser Mover und Frame:
  1401.  
  1402. Ist im Text des Objekts ein [ eingetragen, wird der folgende Buchstabe
  1403. als Tastatur-Shortcut benutzt, d.h. der Buchstabe zusammen mit der
  1404. Shortkey-Taste lösen das Objekt aus. Beispiel:
  1405.  
  1406.  
  1407. Aus dem Buttontext  [Selectable  wird  Selectable  also mit
  1408. unterstrichenem S.                     
  1409.  
  1410.  
  1411. Durch Drücken von [ALTERNATE]-[S] wird das Objekt selektiert und
  1412. - wenn das Objekt den EXIT-Status hat - der Dialog auch verlassen.
  1413.  
  1414. Es werden ausschliesslich folgende Zeichen als Shortcuts akzep-
  1415. tiert:
  1416.  
  1417. A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
  1418.                   1 2 3 4 5 6 7 8 9 0
  1419.  
  1420. wobei Gross- und Kleinbuchstaben als gleichwertig betrachtet werden.
  1421.  
  1422. \end
  1423.  
  1424. screen ( sensitive ( "NewDialog" ))
  1425. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1426. ----------------------------------------------------------------------
  1427.  
  1428. Prototyp: BOOL NewDialog ( OBJECT *tree );
  1429.  
  1430.  
  1431. Beim Aufruf dieser Funktion legt SysGem intern Strukturen an, in denen
  1432. wichtige Parameter über den Dialog gespeichert werden, z. B. der Hin-
  1433. tergrund des Dialogs. Die Funktion gibt \#TRUE\# zurück, wenn die Struktur
  1434. angelegt werden konnte. Sollte es einmal passieren, dass die Funktion
  1435. \#FALSE\# zurückgibt und Sie dennoch den Dialog darstellen lassen wollen,
  1436. so passiert gar nichts.
  1437.  
  1438. Siehe auch: \#Besonderheiten\#
  1439.  
  1440. \end
  1441.  
  1442. screen ( sensitive ( "DoDialog" ))
  1443. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1444. ----------------------------------------------------------------------
  1445.  
  1446. Prototyp: INT DoDialog ( OBJECT *tree, INT first_edit, BYTE *title );
  1447.  
  1448.  
  1449. Öffnet ein Fenster, der den optionalen Title 'title' besitzt und
  1450. stellt dann den Dialog dar.
  1451.  
  1452. In 'tree' übergeben Sie die Adresse, die Sie mittels \#RscAdr\# bestimmt
  1453. haben. 'first_edit' gibt das erste editierbare Feld innerhalb des
  1454. Dialogs an. Sollten in Ihrer Dialogbox keine Edit-Felder vorkommen,
  1455. so übergeben Sie einfach eine 0.
  1456.  
  1457. Die Funktion kümmert sich dann um alles. Um das Verschieben, um
  1458. Eingaben, einfach um alles. Nachdem der Benutzer ein EXIT oder
  1459. TOUCHEXIT Feld angeklickt hat und damit den Dialog verlassen will,
  1460. wird der Hintergrund automatisch restauriert. Die Funktion gibt die
  1461. Nummer des Objektes zurück, über den der Benutzer den Dialog verlassen
  1462. hat.
  1463.  
  1464.  
  1465. Siehe auch: \#Besonderheiten\#
  1466.  
  1467. \end
  1468.  
  1469. screen ( sensitive ( "Besonderheiten" ))
  1470. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1471. ----------------------------------------------------------------------
  1472.  
  1473. Kommen in Ihren Dialogen Edit-Felder vor, so hat SysGem in diesem
  1474. Zusammenhang noch eine Besonderheit zu bieten:
  1475.  
  1476. Ist ein Feld DEFAULT gesetzt, wird es nicht - wie sonst üblich - nur
  1477. mit RETURN angewählt, der Benutzer muss SHIFT-RETURN betätigen, um das
  1478. DEFAULT-Feld anzuwählen.
  1479.  
  1480. Innerhalb von Edit-Feldern kann der Benutzer nun mittels RETURN zum
  1481. nächsten Edit-Feld springen. Auf TAB oder die Cursortasten kann nun
  1482. weitgehend verzichtet werden - Return ist viel einfacher. Befindet
  1483. sich der Cursor im letzten Edit-Feld und betätigt der Benutzer RETURN,
  1484. wird der Cursor in das erste Edit-Feld gesetzt (und umgekehrt). Ein
  1485. bisschen komfortabler als GEM sollte es halt schon sein...
  1486.  
  1487. Nichtsdestotrotz können sie natürlich auch die Vorgehensweise ein-
  1488. stellen, die Sie von GEM her gewohnt sind! Alles weitere finden Sie
  1489. bei der Funktion \#SetReturn\#.
  1490.  
  1491. \end
  1492.  
  1493. screen ( sensitive ( "SetReturn" ))
  1494. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1495. ----------------------------------------------------------------------
  1496.  
  1497. Prototyp: VOID SetReturn ( BOOL like_sysgem );
  1498.  
  1499.  
  1500. Wie bei den Dialogen und den Editfeldern besprochen, können Sie mit
  1501. dieser Funktion das Verhalten der Return-Taste einstellen.
  1502.  
  1503. - 1        Die Editfelder lassen sich mit der Taste <Return> weiter
  1504.            anwählen, d.h., drückt man Return, wird der Cursor
  1505.            auf das nächste Editfeld gesetzt und ein evtl. gesetzter
  1506.            Exit-Button kann mit [Shift][Return] ausgewählt werden.
  1507.  
  1508.            Dies ist die Voreinstellung.
  1509.  
  1510. - 0        Die [Return] Taste wählt den Default-Button an. Es findet
  1511.            keine Positionierung in den Editfeldern statt. Der Benutzer
  1512.            muss also immer die [TAB] Taste oder die Cursor-Tasten
  1513.            benutzen, um ein Editfeld weiterzukommen.
  1514.  
  1515. Siehe auch: \#Besonderheiten\#
  1516.  
  1517. \end
  1518.  
  1519. screen ( sensitive ( "DialPosXY" ))
  1520. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1521. ----------------------------------------------------------------------
  1522.  
  1523. Prototyp: VOID DialPosXY ( BOOL center );
  1524.  
  1525.  
  1526. Normalerweise erscheinen Dialoge in der Bildschirmmitte. Bei Grossbild-
  1527. schirmen ist es allerdings für die Masse der Anwender bequemer, wenn
  1528. die Dialoge an der Position erscheinen, wo sich zur Zeit die Maus
  1529. befindet.
  1530.  
  1531. Übergeben Sie \#TRUE\#, werden die Dialoge in der Bildschirmmitte darge-
  1532. stellt. Dies ist die Voreinstellung.
  1533.  
  1534. Übergeben Sie \#FALSE\#, erscheinen die Dialoge an der Mausposition.
  1535.  
  1536. \end
  1537.  
  1538. screen ( sensitive ( "SetFieldProc" ))
  1539. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1540. ----------------------------------------------------------------------
  1541.  
  1542. Prototyp: VOID SetFieldProc (INT (*proc)(OBJECT *tree, INT ed, LONG id));
  1543.  
  1544.  
  1545. Mit  Hilfe  dieser  Funktion können Sie eine Funktion anmelden,  die
  1546. angesprungen wird, wenn Sie in einem Dialog ein Editfeld weitergehen.
  1547.  
  1548. 'ed' > 0        Als Argument wird der Index des Editfeldes
  1549.                 übergeben, den der Cursor gerade verlassen hat
  1550.                 und der Zeiger auf den aktuellen Baum also
  1551.                 ein Zeiger auf den Dialog), damit Sie auch
  1552.                 eine Routine für mehrere Dialoge nutzen können.
  1553.  
  1554. 'ed' < 0        Manchmal kann es aber sinnvoll sein, zu wissen,
  1555.                 was in einem Editfeld steht, _bevor_ der Cursor
  1556.                 in das Feld gesetzt wird.
  1557.  
  1558.                 Um zu erkennen, was denn nun passiert ist, wird
  1559.                 Index das entsprechenden Editfeld _negativ_
  1560.                 angegeben, was natürlich von Ihnen abgefragt werden
  1561.                 _muss_.
  1562.  
  1563. - tree          Zeiger auf den Dialog, in dem sich das Editfeld
  1564.                 befindet.
  1565.  
  1566. - id            Die Id, die bei \#WindowDialog\# angegeben wurde.
  1567.  
  1568.  
  1569. Die Funktion muß zurückliefern:
  1570.  
  1571. -1       Der Cursor bleibt in diesem Editfeld
  1572.  
  1573.  0       Weitermachen, aber Cursor bleibt im alten Feld
  1574.  
  1575.  1       Cursor wird in's neue Feld gesetzt
  1576.  
  1577.  
  1578. \end
  1579.  
  1580. screen ( sensitive ( "Alert" ))
  1581. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1582. ----------------------------------------------------------------------
  1583.  
  1584. Prototyp: INT Alert ( INT priority, INT def, BYTE *alert_string );
  1585.  
  1586.  
  1587. Beispiel: button = Alert ( ALERT_NORM, 2, "[3][Hallo, Ihr da!][ [Tag | [Nacht]" );
  1588.             ^                 ^        ^    ^        ^                 ^
  1589.  Ergebnis --|                 |        |    |        |                 |
  1590.  Priorität -------------------|        |    |        |                 |
  1591.  Defaultbutton ------------------------|    |        |                 |
  1592.                                             |        |                 |
  1593.  Icon --------------------------------------|        |                 |
  1594.                                                      |                 |
  1595.  Text der Alertbox (durch '|' getrennt) -------------|                 |
  1596.                                                                        |
  1597.  Die einzelnen Buttons, die Benutzer wählen kann ----------------------|
  1598.  
  1599. Die Funktion stellt eine AlertBox im Fenster dar; wobei man das Verhalten
  1600. der Alertbox noch beeinflussen kann. Parameter für priority:
  1601.  
  1602. ALERT_NORM      Normales Fenster. Die Hintergrundprozesse können bedient
  1603.                 werden. Ausblenden des Programms geht allerdings nicht.
  1604.  
  1605. ALERT_STOP      Nur die Alertbox kann bedient werden.
  1606.  
  1607.  
  1608. Drei Icons stehen zur Auswahl:
  1609.  
  1610. 0 = kein Icon
  1611. 1 = Ausrufezeichen
  1612. 2 = Fragezeichen
  1613. 3 = Stop-Schild
  1614.  
  1615. Der Text darf aus maximal 16 Zeilen mit maximal 55 Zeichen pro
  1616. Zeile bestehen. Das Zeichen '|' trennt die Zeilen voneinander.
  1617.  
  1618. Die Zahl der Quittierungsknöpfe muss zwischen 1 und 5 liegen. Der
  1619. Text auf jedem Knopf darf dabei maximal 20 Zeichen lang sein.
  1620.  
  1621. 'def' gibt die Nummer des Buttons an, der beim Alert als Default
  1622. erscheinen soll, also mit RETURN anwählbar ist. Wird eine 0 über-
  1623. geben, so ist kein Button mit RETURN anwählbar; der Benutzer muss
  1624. mit der Maus den Alert bedienen.
  1625.  
  1626. Die Funktion gibt die Nummer des Buttons zurück, den der Benutzer
  1627. gewählt hat. Klickte der Benutzer z. B. in obigem Beispiel auf 'Tag',
  1628. so ist das Ergebnis 1. Klickt er auf 'Nacht', gibt Alert eine 2
  1629. zurück.
  1630.  
  1631.  
  1632. Siehe auch: \#SetIconColor\#  \#SetButton\#
  1633.  
  1634. \end
  1635.  
  1636. screen ( sensitive ( "SetIconColor" ))
  1637. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1638. ----------------------------------------------------------------------
  1639.  
  1640. Prototyp: INT SetIconColor ( INT color );
  1641.  
  1642.  
  1643. Diese Funktion setzt die Farbe des Icons des Alerts.
  1644.  
  1645. Übergeben Sie für 'color' -1, wird die aktuell eingestellte Farbe
  1646. zurückgeliefert.
  1647.  
  1648. \end
  1649.  
  1650. screen ( sensitive ( "SetButton" ))
  1651. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1652. ----------------------------------------------------------------------
  1653.  
  1654. Prototyp: VOID SetButton ( INT just );
  1655.  
  1656.  
  1657. Mit dieser Funktion können Sie die Ausrichtung der Buttons in Alerts
  1658. bestimmen. Es gibt drei Möglichkeiten:
  1659.  
  1660. - ButtonLeft     Die Buttons werden linksbündig angeordnet.
  1661. - ButtonCenter   Die Buttons werden zentriert. Voreinstellung.
  1662. - ButtonRight    Die Buttons werden rechtsbündig angeordnet.
  1663.  
  1664. \end
  1665.  
  1666. screen ( sensitive ( "GetText" ))
  1667. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1668. ----------------------------------------------------------------------
  1669.  
  1670. Prototyp: BYTE *GetText ( OBJECT *tree, INT index, BYTE *text );
  1671.  
  1672.  
  1673. Erfragt den Text des Objectes 'index' im Baum 'tree'.
  1674. Die Funktion kümmert sich selbst darum, ob Sie einen String, einen
  1675. Edittext oder z.B. Icontext abfragen wollen.
  1676.  
  1677. Die Funktion liefert den Zeiger auf 'text' zurück.
  1678.  
  1679. \end
  1680.  
  1681. screen ( sensitive ( "SetText" ))
  1682. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1683. ----------------------------------------------------------------------
  1684.  
  1685. Prototyp: VOID SetText ( OBJECT *tree, INT index, BYTE *text );
  1686.  
  1687.  
  1688. Setzt den Text 'text' des Objektes 'index' im Baum 'tree'.
  1689. Die Funktion kümmert sich selbst darum, ob Sie einen String, einen
  1690. Edit-Text oder z.B. einen Icontext setzen wollen.
  1691.  
  1692. \end
  1693.  
  1694. screen ( sensitive ( "RedrawObj" ))
  1695. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1696. ----------------------------------------------------------------------
  1697.  
  1698. Prototyp: VOID RedrawObj (OBJECT *tree, INT obj, INT depth, INT state, INT flag);
  1699.  
  1700.  
  1701. Zeichnet das Objekt 'obj' mit der Tiefe 'depth' des Baumes 'tree' neu.
  1702.  
  1703. 'state' gibt an, ob ein neuer Status genutzt werden soll.
  1704.  
  1705. 'flag' gibt an, was getan werden soll:
  1706.  
  1707.   - FLIP_STATE  Ist der Status schon gesetzt, wird er entfernt,
  1708.                 ist er nicht vorhanden, wird er gesetzt.
  1709.  
  1710.   - DEL_STATE   Der angegebene Status wird entfernt.
  1711.                 War er beim Aufruf nicht gesetzt, wird das Objekt
  1712.                 auch nicht gezeichnet!
  1713.  
  1714.   - SET_STATE   Der angegebene Status wird gesetzt.
  1715.                 War er beim Aufruf schon gesetzt, wird das Objekt
  1716.                 auch nicht gezeichnet!
  1717.  
  1718.   - UPD_STATE   Das Objekt wird lediglich neu gezeichnet.
  1719.  
  1720. ----------------------------------------------------------------------
  1721. Beispiel:
  1722.  
  1723. RedrawObj ( demo_dialog, OK_BUTTON, 0, SELECTED, DEL_STATE );
  1724.  
  1725.  
  1726. Zeichnet das Objekt OK_BUTTON im Baum demo_dialog __nach__ dem
  1727. Entfernen des SELECTED-Status neu --- allerdings nur dann, wenn
  1728. SELECTED im Status vorhanden ist. Wenn es nichts zu ändern gibt,
  1729. zeichnet die Funktion auch nichts neu.
  1730.  
  1731. Eine Ausnahme ist UPD_STATE. Dieses Flag erzwingt das neuzeichnen,
  1732. allerdings ohne Änderung des Status. Für 'state' sollte also
  1733. 'NONE' übergeben werden, andere Werte werden ignoriert.
  1734.  
  1735. Die Funktion beachtet teilweise verdeckte Bereiche automatisch, so
  1736. dass Sie hiermit auch in teilweise oder ganz verdeckten Fensterdialogen
  1737. zeichnen können.
  1738.  
  1739. \end
  1740.  
  1741. screen ( sensitive ( "NewArea" ))
  1742. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1743. ----------------------------------------------------------------------
  1744.  
  1745. Prototyp: BOOL NewArea ( \#AREA\# *area );
  1746.  
  1747.  
  1748. Legt eine neue Area-Struktur an. Die Funktion liefert \#TRUE\#, wenn alles
  1749. glatt ging.
  1750.  
  1751. \end
  1752.  
  1753. screen ( sensitive ( "ClearArea" ))
  1754. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1755. ----------------------------------------------------------------------
  1756.  
  1757. Prototyp: VOID ClearArea ( \#AREA\# *area );
  1758.  
  1759.  
  1760. Gibt einen eventuell noch allozierten Speicher frei. Die Area-Variable
  1761. bleibt intern aber noch bekannt.
  1762.  
  1763. \end
  1764.  
  1765. screen ( sensitive ( "FreeArea" ))
  1766. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1767. ----------------------------------------------------------------------
  1768.  
  1769. Prototyp: VOID FreeArea ( \#AREA\# *area );
  1770.  
  1771.  
  1772. Gibt die Area-Variable frei und eventuell noch benutzen Speicher frei.
  1773.  
  1774. \end
  1775.  
  1776. screen ( sensitive ( "SaveArea" ))
  1777. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1778. ----------------------------------------------------------------------
  1779.  
  1780. Prototyp: BOOL SaveArea ( INT handle, \#AREA\# *area, \#RECT\# *r );
  1781.  
  1782.  
  1783. Sichert einen Bildschirmbereich ins RAM. Die Funktion liefert \#FALSE\#,
  1784. wenn der Bildschirmbereich, der durch 'r' beschrieben wird, nicht
  1785. kopiert werden konnte.
  1786.  
  1787. Ist bereits ein Bildspeicher alloziiert und dieser für das zu
  1788. sichernde Teilstück zu klein, wird er freigegeben und ein neuer
  1789. Speicherbereich angefordert.
  1790.  
  1791. 'handle' ist die Kennung der VDI-Workstation, auf der die Kopier-
  1792. aktion ablaufen soll. (Normalerweise \#vdi_handle\# aus \#PARAMETER\#).
  1793.  
  1794. \end
  1795.  
  1796. screen ( sensitive ( "RestoreArea" ))
  1797. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1798. ----------------------------------------------------------------------
  1799.  
  1800. Prototyp: VOID RestoreArea ( INT handle, \#AREA\# *area );
  1801.  
  1802.  
  1803. Kopiert einen mit \#SaveArea\# gespeicherten Bereich wieder auf
  1804. seine Originalposition zurück.
  1805.  
  1806. 'handle' ist die Kennung der VDI-Workstation, auf der die Kopier-
  1807. aktion ablaufen soll. (Normalerweise \#vdi_handle\# aus \#PARAMETER\#).
  1808.  
  1809. \end
  1810.  
  1811. screen ( sensitive ( "CopyArea" ))
  1812. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1813. ----------------------------------------------------------------------
  1814.  
  1815. Prototyp: VOID CopyArea ( INT handle, \#AREA\# *area, INT x, INT y );
  1816.  
  1817.  
  1818. Kopiert einen mit \#SaveArea\# gespeicherten Bereich an die
  1819. Position x und y. Der gesicherte Bereich wird dabei nicht
  1820. verändert.
  1821.  
  1822. 'handle' ist die Kennung der VDI-Workstation, auf der die Kopier-
  1823. aktion ablaufen soll. (Normalerweise \#vdi_handle\# aus \#PARAMETER\#).
  1824.  
  1825. \end
  1826.  
  1827. screen ( sensitive ( "MoveScreen" ))
  1828. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1829. ----------------------------------------------------------------------
  1830.  
  1831. Prototyp: VOID MoveScreen ( INT handle, \#RECT\# *r, INT x, INT y );
  1832.  
  1833.  
  1834. Diese Funktion kopiert einen Bildschirmbereich, dessen Koordinaten
  1835. in 'r' beschrieben sind, an die Position x, y.
  1836.  
  1837. 'handle' ist die Kennung der VDI-Workstation, auf der die Kopier-
  1838. aktion ablaufen soll. (Normalerweise \#vdi_handle\# aus \#PARAMETER\#).
  1839.  
  1840. \end
  1841.  
  1842. screen ( sensitive ( "ClearEditFields" ))
  1843. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1844. ----------------------------------------------------------------------
  1845.  
  1846. Prototyp: VOID ClearEditFields ( OBJECT *tree );
  1847.  
  1848.  
  1849. Löscht alle Editfelder im Dialog 'tree'. Editfelder, die mit dem
  1850. DISABLED-Flag versehen sind, oder denen das EDITABLE-Flag fehlt,
  1851. werden nicht berücksichtigt.
  1852.  
  1853. \end
  1854.  
  1855. screen ( sensitive ( "GetEditFields" ))
  1856. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1857. ----------------------------------------------------------------------
  1858.  
  1859. Prototyp: VOID GetEditFields ( OBJECT *tree,
  1860.                                VOID   (*callback)(INT obj, BYTE *s ));
  1861.  
  1862.  
  1863. Um das auslesen von Editfeldern zu rationalisieren, gibt es diese
  1864. Funktion.
  1865.  
  1866. Die callback-Funktion wird mit der Objektnummer des Editfeldes und dem
  1867. Inhalt des Editfeldes aufgerufen. Editfelder, die mit dem DISABLED-Flag
  1868. versehen sind, oder denen das EDITABLE-Flag fehlt, werden nicht berück-
  1869. sichtigt.
  1870.  
  1871. \end
  1872.  
  1873. screen ( sensitive ( "SetState" ))
  1874. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1875. ----------------------------------------------------------------------
  1876.  
  1877. Prototyp: VOID SetState ( OBJECT *tree, INT obj, INT state );
  1878.  
  1879.  
  1880. Verodert den Status 'state' mit den eventuell bereits vorhandenen
  1881. Objektstati des Objekts 'obj' im Baum 'tree'.
  1882.  
  1883. \end
  1884.  
  1885. screen ( sensitive ( "DelState" ))
  1886. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1887. ----------------------------------------------------------------------
  1888.  
  1889. Prototyp: VOID DelState ( OBJECT *tree, INT obj, INT state );
  1890.  
  1891.  
  1892. Löscht den Status 'state' beim Objekt 'obj' im Baum 'tree'.
  1893.  
  1894. \end
  1895.  
  1896. screen ( sensitive ( "GetState" ))
  1897. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1898. ----------------------------------------------------------------------
  1899.  
  1900. Prototyp: BOOL GetState ( OBJECT *tree, INT obj, INT state );
  1901.  
  1902.  
  1903. Liefert \#TRUE\#, wenn 'state' beim Objekt gesetzt ist, \#FALSE\# sonst.
  1904.  
  1905. \end
  1906.  
  1907. screen ( sensitive ( "SetGlobalState" ))
  1908. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1909. ----------------------------------------------------------------------
  1910.  
  1911. Prototyp: VOID SetGlobalState ( OBJECT *tree, INT obj, INT state );
  1912.  
  1913.  
  1914. Setzt den Status 'state' beim Objekt 'obj' global. Während bei
  1915. \#SetState\# verodert wird, wird das hier nicht gemacht.
  1916.  
  1917. \end
  1918.  
  1919. screen ( sensitive ( "SetFlags" ))
  1920. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1921. ----------------------------------------------------------------------
  1922.  
  1923. Prototyp: VOID SetFlags ( OBJECT *tree, INT obj, INT flags );
  1924.  
  1925.  
  1926. Verodert das Flag 'flags' mit den eventuell bereits vorhandenen
  1927. Objektflags des Objekts 'obj' im Baum 'tree'.
  1928.  
  1929. \end
  1930.  
  1931. screen ( sensitive ( "DelFlags" ))
  1932. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1933. ----------------------------------------------------------------------
  1934.  
  1935. Prototyp: VOID DelFlags ( OBJECT *tree, INT obj, INT flags );
  1936.  
  1937.  
  1938. Löscht das Flag 'flags' beim Objekt 'obj' im Baum 'tree'.
  1939.  
  1940. \end
  1941.  
  1942. screen ( sensitive ( "GetFlags" ))
  1943. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1944. ----------------------------------------------------------------------
  1945.  
  1946. Prototyp: BOOL GetFlags ( OBJECT *tree, INT obj, INT flags );
  1947.  
  1948.  
  1949. Liefert \#TRUE\#, wenn 'flag' beim Objekt gesetzt ist, \#FALSE\# sonst.
  1950.  
  1951. \end
  1952.  
  1953. screen ( sensitive ( "SetGlobalFlags" ))
  1954. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1955. ----------------------------------------------------------------------
  1956.  
  1957. Prototyp: VOID SetGlobalFlags ( OBJECT *tree, INT obj, INT flags );
  1958.  
  1959.  
  1960. Setzt das/die Flags 'flags' beim Objekt 'obj' global. Während bei
  1961. \#SetFlags\# verodert wird, wird das hier nicht gemacht.
  1962.  
  1963. \end
  1964.  
  1965. screen ( sensitive ( "objc_frame" ))
  1966. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1967. ----------------------------------------------------------------------
  1968.  
  1969. Prototyp: INT objc_frame ( OBJECT *tree, INT obj );
  1970.  
  1971.  
  1972. Berechnet den Rahmen des Objektes 'obj' im Baum 'tree'.
  1973. Eine 2 würde bedeuten, dass der Rahmen 2 Pixel aus dem Dialog
  1974. herausragt.
  1975.  
  1976. \end
  1977.  
  1978. screen ( sensitive ( "CalcArea" ))
  1979. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1980. ----------------------------------------------------------------------
  1981.  
  1982. Prototyp: VOID CalcArea ( OBJECT *tree, INT obj, \#RECT\# *r );
  1983.                                  var r : \#RECT\# );
  1984.  
  1985.  
  1986. Berechnet die Ausmasse des Objektes 'obj' im Baum 'tree' und liefert
  1987. die Koordinaten in 'r' zurück. Eventuelle Rahmen, Schattierungen
  1988. usw. werden berücksichtigt. Die Funktion liefert die absoluten Bild-
  1989. schirmkoordinaten zurück.
  1990.  
  1991.  
  1992. \end
  1993.  
  1994. screen ( sensitive ( "WindowDialog" ))
  1995. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  1996. ----------------------------------------------------------------------
  1997.  
  1998. INT  WindowDialog ( LONG        id,
  1999.                     INT         xpos,
  2000.                     INT         ypos,
  2001.                     UBYTE       *name,
  2002.                     UBYTE       *info,
  2003.                     BOOL        shut,
  2004.                     BOOL        force,
  2005.                     OBJECT      *tree,
  2006.                     OBJECT      *menu,
  2007.                     INT         edit,
  2008.                     VOID        *user,
  2009.                     \#DPROC\#       proc );
  2010.  
  2011.  
  2012. Diese  Funktion  stellt einen Dialog in einem Fenster dar und kümmert
  2013. sich  um  die  gesamte  Verwaltung  desselben.  Dies  ist die "grosse"
  2014. Variante,  bei der Sie auf sehr viele Dinge, die den Dialog betreffen,
  2015. Einfluss  ausüben  können.  Wollen  Sie nur schnell einen Dialog auf
  2016. den  Bildschirm  zaubern,  können  Sie  statt  dieser  Funktion  auch
  2017. \#DoDialog\# benutzen.
  2018.  
  2019. Die Parameter:
  2020.  
  2021. - id            Die Id dient dazu, um z. B. von anderen Prozessen
  2022.                 Fensterdaten abzufragen. Ausserdem können Sie so
  2023.                 Ihren Dialog komfortabel verwalten. Erwartet wird ein
  2024.                 4-Zeichen-Code, z.b. 'DEMO', oder 'INFO' oder
  2025.                 ähnliches.
  2026.  
  2027.                 Die Funktion prüft, ob die Id schon vorhanden ist,
  2028.                 d.h., zwei Fenster mit der gleichen Id sind nicht
  2029.                 möglich.
  2030.  
  2031. - xpos          Gibt die X-Position an, an der der Dialog erscheinen
  2032.                 soll. Soll nach dem mit \#DialPosXY\# eingestellen
  2033.                 Parameter verfahren werden, übergeben Sie einfach
  2034.                 -1.
  2035.  
  2036. - ypos          Gibt die Y-Position an, an der der Dialog erscheinen
  2037.                 soll. Soll nach dem mit \#DialPosXY\# eingestellen
  2038.                 Parameter verfahren werden, übergeben Sie einfach
  2039.                 -1.
  2040.  
  2041. - title         Mit diesem String legen Sie die Dialogüberschrift
  2042.                 fest. In einer Multitask-Umgebung setzt SysGem
  2043.                 automatisch die Programm-Id als "[xxxx]" vor den
  2044.                 Fensternamen. Wenn das von Ihnen nicht gewünscht
  2045.                 wird, übergeben Sie als erstes Zeichen ein '|'.
  2046.                 Die Id wird dann nicht angezeigt.
  2047.  
  2048. - info          Hiermit kann eine Info-Zeile übergeben werden, die
  2049.                 im Dialog dargestellt wird.
  2050.  
  2051.                 Es ist entweder nur eine Info-Zeile oder eine
  2052.                 Menüzeile möglich. Haben Sie noch eine Menü-Zeile
  2053.                 mit angegeben, ist die Info-Zeile ohne Bedeutung.
  2054.  
  2055.                 Wollen Sie keine Info-Zeile, so übergeben Sie
  2056.                 einfach einen leeren String (also "").
  2057.  
  2058. - shut          Übergeben Sie \#TRUE\#, wird der Dialog mit einem
  2059.                 Schliessfeld ausgestattet.
  2060.  
  2061. - force         Übergeben Sie \#TRUE\#, kann nur dieser Dialog vom
  2062.                 Benutzer bearbeitet werden. Der Benutzer kann keine
  2063.                 anderen Fenster in den Vordergrund holen, solange
  2064.                 dieser Dialog nicht beendet wurde. Um dies auch
  2065.                 optisch zu verdeutlichen, wird die Menüzeile
  2066.                 gesperrt.
  2067.  
  2068. - tree          Zeiger auf den Dialog, der im Fenster dargestellt
  2069.                 werden soll. Muß vorher mit \#NewDialog\# angemeldet
  2070.                 worden sein.
  2071.  
  2072. - menu_line     Im Fenster kann eine Menüzeile dargestellt werden.
  2073.                 Wollen Sie keine, so übergeben Sie einfach NULL.
  2074.  
  2075. - first_edit    Gibt das Editfeld an, in das der Cursor gesetzt
  2076.                 werden soll. Enthält Ihr Dialog keine Edit-Felder,
  2077.                 oder wollen Sie das Editieren verhindern, so
  2078.                 übergeben Sie eine 0. Übergeben Sie -2, sucht sich
  2079.                 SysGem das erste Editfeld selbstständig heraus und
  2080.                 positioniert den Cursor in diesem Feld. Es müssen
  2081.                 aber Editfelder vorhanden sein!
  2082.  
  2083. - user          Hier können Sie einen Zeiger unterbringen, der für
  2084.                 Sie zur Verfügung steht. Wenn Sie keinen brauchen
  2085.                 oder nicht wissen, wozu das gut sein soll, übergeben
  2086.                 Sie einfach NULL.
  2087.  
  2088. - dfunc         Über diese Funktion wird der Dialog von Ihnen
  2089.                 gesteuert. SysGem ruft diese Funktion auf, wenn der
  2090.                 Benutzer etwas getan hat, was die Mitarbeit Ihres
  2091.                 Programmes erfordert.
  2092.  
  2093.                 Mehr unter \#dfunc\#
  2094.  
  2095. \end
  2096.  
  2097. screen ( sensitive ( "redraw" ))
  2098. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  2099. ----------------------------------------------------------------------
  2100.  
  2101. Prototyp: VOID window_redraw ( \#WINDOW_INFO\# *inf );
  2102.  
  2103. Diese  Funktion  wird  aufgerufen,  wenn  ein  Teil  des  Fensters neu
  2104. gezeichnet werden muss.
  2105.  
  2106. \#WINDOW_INFO\# ist dabei wie folgt belegt:
  2107.  
  2108. handle          Das Handle des Fensters, das neu gezeichnet werden
  2109.                 soll.
  2110.  
  2111. id              enthält die Id des Fensters, welches Sie beim
  2112.                 Öffnen angegeben haben.
  2113.  
  2114.                 Ist das Handle des Fensters 0 (Desktop), enthält die
  2115.                 Id immer 'DESK'.
  2116.  
  2117. doc_x
  2118. doc_y           enthalten die Grösse des Documents.
  2119.  
  2120. pos_x
  2121. pos_y           enthalten die Position der linken oberen Ecke des
  2122.                 Dokuments, das im Fenster sichtbar ist.
  2123.  
  2124. scroll          Enthält -1 bei normalem Redraw und den Wert von
  2125.                 WA_..., wenn gescrollt wurde.
  2126.  
  2127. work_area       enthält die Position und Ausmasse des Arbeitsbereiches
  2128.                 des Fensters 'handle'.
  2129.  
  2130. draw_area       enthält die Position und Ausmasse des Arbeitsbereiches
  2131.                 ohne die eventuell eingelinkten Bäume (\#LinkTree\#).
  2132.  
  2133. clip            enthält die Koordinaten des gesetzten Clip-Rechtecks.
  2134.                 Das Clipping ist dabei auf die VDI-Workstation
  2135.                 \#vdi_handle\# eingestellt, welches ja schon für Ihr
  2136.                 Programm reserviert wurde.
  2137.  
  2138.                 Arbeiten Sie mit einer anderen Workstation, so
  2139.                 müssen Sie das Clipping selbst übernehmen!!!
  2140.  
  2141.                 Desweiteren wurde schon wind_update für Sie gesetzt.
  2142.                 Sie sollten es also nicht noch mal aufrufen.
  2143.  
  2144.                 Soweit SysGem dazu in der Lage ist, übernimmt es
  2145.                 Redraw's von allein. Die Redraw-Funktion wird also
  2146.                 nur aufgerufen, wenn es wirklich sein muss. Sie
  2147.                 sollten also nur den Bereich neu zeichnen, der mit
  2148.                 'clip' beschrieben ist.
  2149.  
  2150.                 SysGem versteckt beim Aufruf der Redraw-Funktion
  2151.                 __nicht__ den Mauszeiger, da das bei AES-Ausgaben
  2152.                 sowieso nicht notwendig ist. Tätigen Sie aber
  2153.                 VDI-Ausgaben, müssen Sie selbst dafür sorgen, dass
  2154.                 die Maus nicht 'übermalt' wird.
  2155.  
  2156. user            enthält den Zeiger, den Sie beim Öffnen angegeben
  2157.                 haben.
  2158.  
  2159. \end
  2160.  
  2161. screen ( sensitive ( "action" ),
  2162.          sensitive ( "SG_DRAW" ),
  2163.          sensitive ( "SG_SIZED" ),
  2164.          sensitive ( "SG_MOVED" ),
  2165.          sensitive ( "SG_LCLICK1" ),
  2166.          sensitive ( "SG_LCLICK2" ),
  2167.          sensitive ( "SG_RCLICK1" ),
  2168.          sensitive ( "SG_RCLICK2" ),
  2169.          sensitive ( "SG_BUTTON" ))
  2170. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  2171. ----------------------------------------------------------------------
  2172.  
  2173. Prototyp: INT action ( INT msg, \#WINDOW_INFO\# *inf );
  2174.  
  2175.  
  2176. Über  diese Funktion werden Ereignisse, die ein Fenster betreffen, an
  2177. Sie   weitergeleitet.   Viele   Ereignisse  (z.  B.  Sliderverwaltung)
  2178. übernimmt  SysGem  allein,  aber bei z. B. Mausklicks ins Fenster ist
  2179. SysGem mit seinem Latein auch am Ende und braucht Ihre Hilfe.
  2180.  
  2181.  
  2182. msg  kann folgende Werte annehmen:
  2183.  
  2184. - SG_LCLICK1    Ein Einfachklick mit der linken Maustaste trat auf.
  2185. - SG_LCLICK2    Ein Doppelklick mit der linken Maustaste trat auf.
  2186. - SG_RCLICK1    Ein Einfachklick mit der rechten Maustaste trat auf.
  2187. - SG_RCLICK2    Ein Doppelklick mit der rechten Maustaste trat auf.
  2188.  
  2189.                 Folgende Elemente aus WINDOW_INFO sind belegt:
  2190.  
  2191.                 handle
  2192.                 id
  2193.                 doc_x
  2194.                 doc_y
  2195.                 pos_x
  2196.                 pos_y
  2197.                 mx
  2198.                 my
  2199.                 work_area
  2200.                 draw_area
  2201.                 user
  2202.                 line        - Die Zeile, in die geklickt wurde oder
  2203.                               -1L, wenn sich an dieser Stelle keine
  2204.                               Textzeile befindet
  2205.                 column      - Die Spalte, in die geklickt wurde oder
  2206.                               -1L, wenn sich an dieser Stelle kein
  2207.                               Zeichen befindet (z.b. wenn die Zeile
  2208.                               zu kurz ist)
  2209.  
  2210.                 line_ptr    - Zeiger auf das [0]-Element des Strings.
  2211.  
  2212.                 Diese 3 Variablen sind nur belegt, wenn sich ein Text
  2213.                 im Fenster befindet, der mit \#LinkList\# eingetragen
  2214.                 wurde oder mit \#Display\# geladen wurde.
  2215.  
  2216. - SG_DRAW       Das Fenster _wurde_ neu gezeichnet.
  2217.  
  2218.                 Folgende Elemente aus WINDOW_INFO sind belegt:
  2219.  
  2220.                 handle
  2221.                 id
  2222.                 doc_x
  2223.                 doc_y
  2224.                 pos_x
  2225.                 pos_y
  2226.                 work_area
  2227.                 draw_area
  2228.                 clip       - Enthält die gezeichneten Koordinaten
  2229.                 user
  2230.  
  2231. - SG_KEY        Ein Tastendruck trat auf. Gibt die Funktion SG_KEYCONT
  2232.                 zurück, wird der Tastendruck noch weitergeleitet.
  2233.  
  2234.                 Wird SG_KEYUSED zurückgegeben, so heisst dies, dass
  2235.                 der Tastendruck 'verbraucht' wurde und nicht mehr
  2236.                 weitergeleitet werden soll.
  2237.  
  2238.                 Bei einem Rückgabewert von SG_CLOSE wird das Fenster
  2239.                 geschlossen, allerdings wird diese Funktion nochmal
  2240.                 mit dem 'msg'-Wert SG_QUIT aufgerufen.
  2241.  
  2242.                 Folgende Elemente aus WINDOW_INFO sind belegt:
  2243.  
  2244.                 handle
  2245.                 id
  2246.                 doc_x
  2247.                 doc_y
  2248.                 pos_x
  2249.                 pos_y
  2250.                 key        - Scancode der gedrückten Taste
  2251.                 state      - Status der Sondertasten
  2252.                 work_area
  2253.                 draw_area
  2254.                 user
  2255.  
  2256. - SG_MENU       Das Fenstermenü wurde angewählt.
  2257.  
  2258.                 Folgende Elemente aus WINDOW_INFO sind belegt:
  2259.  
  2260.                 handle
  2261.                 id
  2262.                 doc_x
  2263.                 doc_y
  2264.                 pos_x
  2265.                 pos_y
  2266.                 mItem
  2267.                 work_area
  2268.                 draw_area
  2269.                 user
  2270.  
  2271. - SG_MOVED      Das Fenster wurde verschoben; oder
  2272. - SG_SIZED      Das Fenster wurde mittels Sizer in der Grösse verändert.
  2273.  
  2274.                 Folgende Elemente aus WINDOW_INFO sind belegt:
  2275.  
  2276.                 handle
  2277.                 id
  2278.                 doc_x
  2279.                 doc_y
  2280.                 pos_x
  2281.                 pos_y
  2282.                 work_area
  2283.                 draw_area
  2284.                 user
  2285.  
  2286. - SG_END        Der Benutzer möchte, dass das Fenster geschlossen
  2287.                 wird. Geben Sie SG_CLOSE zurück, wird das Fenster
  2288.                 geschlossen. Geben Sie SG_CONT zurück, bleibt das
  2289.                 Fenster offen, so, als hätten Sie die Meldung nie
  2290.                 erhalten.
  2291.  
  2292.                 Folgende Elemente aus WINDOW_INFO sind belegt:
  2293.  
  2294.                 handle
  2295.                 id
  2296.                 doc_x
  2297.                 doc_y
  2298.                 pos_x
  2299.                 pos_y
  2300.                 work_area
  2301.                 draw_area
  2302.                 user
  2303.  
  2304. - SG_QUIT       Das Fenster wird auf jeden Fall geschlossen, sobald
  2305.                 die Routine zurückkehrt. Sie können also
  2306.                 irgendwelche Strukturen oder Speicherbereiche
  2307.                 freigeben. Das Schliessen des Fensters kann nicht
  2308.                 verhindert werden.
  2309.  
  2310.                 Die Info-Struktur ist wie bei SG_END belegt.
  2311.  
  2312. - SG_UNTOP      Das Fenster wurde in den Hintergrund gelegt. Diese
  2313.                 Nachricht wird gesendet, damit Sie darauf reagieren
  2314.                 können, wenn Sie z. B. einen Cursor in einem Fenster
  2315.                 darstellen.
  2316.  
  2317.                 Folgende Elemente aus WINDOW_INFO sind belegt:
  2318.  
  2319.                 handle
  2320.                 id
  2321.                 doc_x
  2322.                 doc_y
  2323.                 pos_x
  2324.                 pos_y
  2325.                 work_area
  2326.                 draw_area
  2327.                 user
  2328.  
  2329. - SG_TOP        Das Fenster wurde zum obersten aktuellen ernannt.
  2330.  
  2331.                 Folgende Elemente aus WINDOW_INFO sind belegt:
  2332.  
  2333.                 handle
  2334.                 id
  2335.                 doc_x
  2336.                 doc_y
  2337.                 pos_x
  2338.                 pos_y
  2339.                 work_area
  2340.                 draw_area
  2341.                 user
  2342.  
  2343. - SG_INVISIBLE  Der Prozess, zu dem das Fenster gehört, wurde
  2344.                 ausgeblendet (z.Z. nur Mag!X). Das Fenster ist
  2345.                 unsichtbar, bzw. es befindet sich nicht mehr im
  2346.                 sichtbaren Bereich des Bildschirms.
  2347.  
  2348.                 Folgende Elemente aus WINDOW_INFO sind belegt:
  2349.  
  2350.                 handle
  2351.                 id
  2352.                 doc_x
  2353.                 doc_y
  2354.                 pos_x
  2355.                 pos_y
  2356.                 work_area
  2357.                 draw_area
  2358.                 user
  2359.  
  2360.                 Die neuen Koordinaten werden durch einen weiteren
  2361.                 Aufruf mit SG_SIZED mitgeteilt.
  2362.  
  2363.            -->  Eventuelle Redraws sind einzustellen. Diese Nachricht
  2364.                 wird auch gesendet, wenn das Fenster Iconifiziert
  2365.                 wurde.
  2366.  
  2367. - SG_VISIBLE    Das Gegenstück. Der Prozess, bzw. das Fenster wurde
  2368.                 wieder eingeblendet.
  2369.  
  2370.                 WINDOW_INFO-Belegung wie bei SG_INVISIBLE.
  2371.  
  2372.                 Die neuen Koordinaten werden durch einen weiteren
  2373.                 Aufruf mit SG_SIZED mitgeteilt.
  2374.  
  2375. - SG_BUTTON     Haben Sie mit \#LinkTree\# Bäume im Fenster
  2376.                 plaziert, so wurde auf eines dieser Objekte
  2377.                 geklickt.
  2378.  
  2379.                 handle
  2380.                 id
  2381.                 doc_x
  2382.                 doc_y
  2383.                 pos_x
  2384.                 pos_y
  2385.                 mx
  2386.                 my
  2387.                 work_area
  2388.                 draw_area
  2389.                 user
  2390.                 item    - Objektnummer
  2391.                 obj_id  - Id des Baumes
  2392.  
  2393. - SG_DRAGDROP   Objekte wurden via Drag & Drop auf das Fenster
  2394.                 gezogen. Näheres siehe unter \#DRAG_DROP\#.
  2395.  
  2396.                 Folgende Elemente aus WINDOW_INFO sind belegt:
  2397.  
  2398.                 handle
  2399.                 id
  2400.                 doc_x
  2401.                 doc_y
  2402.                 pos_x
  2403.                 pos_y
  2404.                 work_area
  2405.                 draw_area
  2406.                 user
  2407.                 dd
  2408.  
  2409.  
  2410. Als Rückgabewerte stehen Ihnen folgende zur Verfügung:
  2411.  
  2412.  
  2413. - SG_CLOSE      Das Fenster soll geschlossen werden. Es erfolgt noch
  2414.                 ein Aufruf mit SG_QUIT.
  2415.  
  2416. - SG_REDRAW     Das Fenster wird redrawed.
  2417.  
  2418. - SG_TERM       Das Programm wird beendet. Ist identisch mit einem
  2419.                 Aufruf von \#TerminateSysGem\#.
  2420.  
  2421. - SG_CONT       Weitermachen!
  2422.  
  2423. - SG_KEYUSED    Tastendruck wurde von der Funktion ausgewertet. Er
  2424.                 braucht nicht mehr weitergeleitet werden.
  2425.  
  2426. - SG_KEYCONT    Tastendruck an nächste Ebene weiterleiten.
  2427.  
  2428. \end
  2429.  
  2430.  
  2431. screen ( sensitive ( "OpenWindow" ),
  2432.          sensitive ( "scroll_x" ),
  2433.          sensitive ( "scroll_y" ),
  2434.          sensitive ( "doc_x" ),
  2435.          sensitive ( "APROC" ),
  2436.          sensitive ( "RPROC" ),
  2437.          sensitive ( "doc_y" ))
  2438. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  2439. ----------------------------------------------------------------------
  2440.  
  2441. typedef INT     (*APROC)(INT msg, \#WINDOW_INFO\# *inf );
  2442. typedef VOID    (*RPROC)(\#WINDOW_INFO\# *inf );
  2443.  
  2444. INT OpenWindow ( LONG   id,
  2445.                  UBYTE  *name,
  2446.                  UBYTE  *info,
  2447.                  INT    flags,
  2448.                  OBJECT *menu,
  2449.                  INT    align,
  2450.                  BOOL   part_redraw,
  2451.                  INT    scroll_x,
  2452.                  INT    scroll_y,
  2453.                  LONG   doc_x,
  2454.                  LONG   doc_y,
  2455.                  INT    x,
  2456.                  INT    y,
  2457.                  INT    w,
  2458.                  INT    h,
  2459.                  VOID   *user,
  2460.                  RPROC  \#redraw\#,
  2461.                  APROC  \#action\# );
  2462.  
  2463.  
  2464. Erschrecken   Sie  nicht,  es  sieht  komplizierter  aus,  als  es  in
  2465. Wirklichkeit ist.
  2466.  
  2467. - id            Die Id dient dazu, um z. B. von anderen Prozessen
  2468.                 Fensterdaten abzufragen. Ausserdem können Sie so
  2469.                 Ihren Dialog komfortabel verwalten. Erwartet wird ein
  2470.                 4-Zeichen-Code, z.b. 'DEMO', oder 'INFO' oder
  2471.                 ähnliches.
  2472.  
  2473.                 Die Funktion prüft, ob die Id schon vorhanden ist,
  2474.                 d.h., zwei Fenster mit der gleichen Id sind nicht
  2475.                 möglich.
  2476.  
  2477. - name          Der Name des Fensters als String.
  2478.  
  2479.                 In einer Multitask-Umgebung setzt SysGem automatisch
  2480.                 die Programm-Id als "[xxxx]" vor den Fensternamen.
  2481.                 Wenn das von Ihnen nicht gewünscht wird, übergeben Sie
  2482.                 als erstes Zeichen ein '|'. Die Id wird dann nicht
  2483.                 angezeigt.
  2484.  
  2485. - info          Die Text, der in der Infozeile dargestellt wird.
  2486.                 Haben Sie eine Menüzeile angegeben, ist eine
  2487.                 Infozeile nicht möglich. Wollen Sie keine Infozeile,
  2488.                 übergeben Sie einfach einen Leerstring.
  2489.  
  2490. - flags         bestimmt das Aussehen der Fenster. Die einzelnen
  2491.                 Fensterattribute sind in AES.H ausführlich
  2492.                 beschrieben.
  2493.  
  2494.                 Wenn Sie ein Fenster mit allen Attributen haben
  2495.                 wollen, aber ohne Infozeile, können Sie auch einfach
  2496.                 den Wert 0xfef (4079) übergeben. Ist vielleicht
  2497.                 einfacher. Wollen Sie die Infozeile noch dazuhaben,
  2498.                 schreiben Sie einfach 0xfef | INFO.
  2499.  
  2500. - menu_line     Zeiger auf die Menüleiste, oder NULL, wenn Sie keine
  2501.                 Menüleiste benutzen/haben wollen.
  2502.  
  2503. - align         Bestimmt den horizontalen Ausrichtungsfaktor des
  2504.                 Fensters. Die Fensterpostion kann nur solche x-Werte
  2505.                 annehmen, bei denen der Arbeitsbereich des Fensters
  2506.                 auf einem Vielfachen des align-Wertes beginnt. Ist z.
  2507.                 B. ein align- Faktor von 8 angegeben, so kann das
  2508.                 Fenster nur auf x-Positionen mit den Werten 7, 15, 23
  2509.                 usw. liegen, da der Arbeitsbereich des Fensters an
  2510.                 einer um einen Pixel höheren x-Position als der
  2511.                 Fenster-Rahmen beginnt.
  2512.  
  2513.                 Ein align Wert von 8 ist besonders bei Textausgaben
  2514.                 im Fenster sinnvoll, da Text an durch 8 teilbaren
  2515.                 x-Koordinaten vom VDI in einer wesentlich höheren
  2516.                 Geschwindig- keit ausgegeben wird, wobei natürlich
  2517.                 Voraussetzung ist, dass die Textausgabe linksbündig
  2518.                 im Fenster beginnt.
  2519.  
  2520.                 Siehe auch: \#charw\#
  2521.  
  2522. - part_redraw   Übergeben Sie hier \#TRUE\#, so wird das Fenster bei
  2523.                 einem Neuzeichnen schon mal mit weiss übermalt. Dies
  2524.                 ist bei Textausgaben z. B. sinnvoll, da die Texte ja
  2525.                 immer schwarz auf weiss ausgegeben werden. So kann
  2526.                 sich Ihr Programm das Zeichnen des weissen
  2527.                 Hintergrundes sparen.
  2528.  
  2529. - scroll_x
  2530. - scroll_y      geben die horizontale bzw. vertikale Schrittweite des
  2531.                 Fensters in Pixeln an. Bei Betätigung eines
  2532.                 Scrollpfeils scrollt SysGem den Fensterinhalt um den
  2533.                 angegebenen Wert.
  2534.  
  2535.                 Siehe auch: \#charw\#, \#charh\#
  2536.  
  2537. - doc_x
  2538. - doc_y         geben die Grösse des Documents in Pixeln an. Da ein
  2539.                 Fenster ja meistens nur einen kleinen Ausschnitt aus
  2540.                 dem Document zeigt, benötigt SysGem die Angabe, wie
  2541.                 gross das Document wirklich ist, um z. B. die
  2542.                 Position und Grösse von evtl. vorhandenen Slidern
  2543.                 richtig berechnen zu können.
  2544.  
  2545.  
  2546. - x, y, w, h    gibt die Grösse an, die der *** Arbeitsbereich ***
  2547.                 des Fensters beim Öffnen haben soll.
  2548.  
  2549. - user          ist ein Zeiger auf irgendeinen Speicherbereich oder
  2550.                 auf eine Struktur. Die Anwendungsgebiete hängen
  2551.                 dabei ganz allein von Ihnen ab.
  2552.  
  2553.                 Wenn Sie nicht wissen, was Sie damit machen sollen,
  2554.                 oder wenn Sie keinen Zeiger angeben wollen,
  2555.                 übergeben Sie einfach NULL.
  2556.  
  2557. - redraw        ist eine Function, die bei Bedarf den Fensterinhalt
  2558.                 neu zeichnet. Diese Funktion wird von SysGem
  2559.                 automatisch aufgerufen, falls etwas neu zu zeichnen
  2560.                 ist.
  2561.  
  2562.                 Es kann auch NULL übergeben werden.
  2563.  
  2564. - action        an diese Funktion werden Ereignisse gemeldet, die der
  2565.                 Benutzer 'verbrochen' hat und auf die Sie reagieren
  2566.                 wollen/können.
  2567.  
  2568.                 Es kann auch NULL übergeben werden.
  2569.  
  2570.  
  2571. Die Funktion liefert einen Wert > 0, wenn das Fenster geöffnet werden
  2572. konnte. Dieser Wert entspricht dann dem Handle. Bei Werten <= 0 ist
  2573. was schiefgegangen.
  2574.  
  2575. \end
  2576.  
  2577.  
  2578. screen ( sensitive ( "DIALOG_INFO" ),
  2579.          sensitive ( "SG_RIGHTCLICK" ),
  2580.          sensitive ( "SG_DOUBLECLICK" ))
  2581. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  2582. ----------------------------------------------------------------------
  2583.  
  2584. typedef struct
  2585.   {
  2586.     LONG        id;
  2587.     VOID        *user;
  2588.     UINT        special;
  2589.     \#DRAG_DROP\#   *dd;
  2590.   } DIALOG_INFO;
  2591.  
  2592.  
  2593. Enthält   mehrere   Parameter,   die   das   Verwalten  von  Dialogen
  2594. vereinfachen:
  2595.  
  2596. - id        Enthält die Id, die bei WindowDialog angegeben wurde.
  2597.  
  2598. - user      Enthält den User-Zeiger aus \#WindowDialog\#.
  2599.  
  2600. - special   Enthält bei SG_KEY den Status der Sondertasten, bei
  2601.             SG_END kann abgefragt werden, ob ein Doppelklick oder
  2602.             die rechte Maustaste benutzt wurde.
  2603.  
  2604.             rechte Maustaste = special & SG_RIGHTCLICK;
  2605.             Doppelclick      = special & SG_DOUBLECLICK;
  2606.  
  2607. - dd        ist nur belegt, wenn SG_DRAGDROP auftrat. Näheres
  2608.             unter \#DRAG_DROP\#.
  2609.  
  2610. \end
  2611.  
  2612.  
  2613. screen ( sensitive ( "dfunc" ),
  2614.          sensitive ( "DPROC" ),
  2615.          sensitive ( "SG_START" ),
  2616.          sensitive ( "SG_END" ),
  2617.          sensitive ( "SG_QUIT" ),
  2618.          sensitive ( "SG_POSX" ),
  2619.          sensitive ( "SG_POSY" ),
  2620.          sensitive ( "SG_VISIBLE" ),
  2621.          sensitive ( "SG_INVISIBLE" ),
  2622.          sensitive ( "SG_TOP" ),
  2623.          sensitive ( "SG_UNTOP" ),
  2624.          sensitive ( "SG_KEY" ),
  2625.          sensitive ( "SG_MENU" ),
  2626.          sensitive ( "SG_NOWIN" ),
  2627.          sensitive ( "SG_DRAGDROP" ),
  2628.          sensitive ( "SG_CLOSE" ),
  2629.          sensitive ( "SG_REDRAW" ),
  2630.          sensitive ( "SG_TERM" ),
  2631.          sensitive ( "SG_CONT" ),
  2632.          sensitive ( "SG_ABORT" ),
  2633.          sensitive ( "SG_KEYUSED" ),
  2634.          sensitive ( "SG_SLID_UP" ),
  2635.          sensitive ( "SG_SLID_DN" ),
  2636.          sensitive ( "SG_SLID_MV" ),
  2637.          sensitive ( "SG_SLID_PGUP" ),
  2638.          sensitive ( "SG_SLID_PGDN" ),
  2639.          sensitive ( "SG_KEYCONT" ))
  2640. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  2641. ----------------------------------------------------------------------
  2642.  
  2643. Die Funktion ist wie folgt definiert:
  2644.  
  2645. typedef INT     (*DPROC)(INT msg, INT button, \#DIALOG_INFO\# *inf );
  2646.  
  2647.  
  2648. Über diese Funktion steuern Sie verschiede Dinge des \#WindowDialog\#s.
  2649.  
  2650. SysGem ruft diese Funktion automatisch auf, wenn es selbst nicht
  2651. weiterweis, oder wenn es etwas nachfragen muss.
  2652.  
  2653. msg   kann folgende Werte annehmen:
  2654.  
  2655. - SG_START             Diese Nachricht besagt, dass nach Rückkehr
  2656.                        der Routine der Dialog gezeichnet wird. Es ist
  2657.                        hier also die Zeit und der Platz, eventuelle
  2658.                        Voreinstellungen zu tätigen, z. B. Editfelder
  2659.                        vorzubelegen, Buttons zu selektieren oder
  2660.                        ähnliches. Redraws dürfen noch nicht gemacht
  2661.                        werden, da der Dialog noch _nicht_ auf dem
  2662.                        Bildschirm ist!
  2663.  
  2664. - SG_NOWIN             Diese Meldung besagt, dass kein Fenster mehr
  2665.                        zur Verfügung steht, um den Dialog
  2666.                        darzustellen. Jetzt kommt es auf Sie an: Geben
  2667.                        Sie SG_ABORT zurück, wird der Fensterdialog
  2668.                        abgebrochen. Alle anderen Werte führen dazu,
  2669.                        dass der Dialog als ganz 'ordinärer' Dialog
  2670.                        dargestellt wird; es kann ja schliesslich
  2671.                        sein, dass Sie sehr wichtige Dinge vom
  2672.                        Benutzer in Erfahrung bringen wollen.
  2673.  
  2674. - SG_END               Im Dialog wurde ein Objekt angewählt, welches
  2675.                        den EXIT oder TOUCHEXIT Status hat. 'button'
  2676.                        enthält dabei die Objektnummer oder -1, wenn
  2677.                        der Schliessknopf des Dialogs angeklickt
  2678.                        wurde.
  2679.  
  2680.                        Die Funktion wird automatisch noch einmal mit
  2681.                        SG_QUIT aufgerufen, damit eventueller Speicher
  2682.                        von Ihnen wieder freigegeben werden kann.
  2683.  
  2684.                        Siehe auch \#action\#
  2685.  
  2686. - SG_POSX              Wurde das Fenster geschlossen, enthält
  2687.                        'button' die X-Koordinate der letzten Position
  2688.                        des Dialogs. Kann beim nächsten
  2689.                        \#WindowDialog\# als xpos wieder eingesetzt
  2690.                        werden.
  2691.  
  2692. - SG_POSY              Wurde das Fenster geschlossen, enthält
  2693.                        'button' die Y-Koordinate der letzten Position
  2694.                        des Dialogs. Kann beim nächsten
  2695.                        \#WindowDialog\# als ypos wieder eingesetzt
  2696.                        werden.
  2697.  
  2698. - SG_QUIT              Im Prinzip wie SG_END, allerdings enthält
  2699.                        'button' keinen definierten Wert. Das Fenster
  2700.                        muss - egal aus welchem Grund - geschlossen
  2701.                        werden. Diese Nachricht erhalten Sie z. B.,
  2702.                        wenn Ihr Programm terminiert, aber Ihr Dialog
  2703.                        noch offen ist. Da Sie in diesem Fall keine
  2704.                        Wahl haben, ob Ihr Dialog offen bleiben soll,
  2705.                        müssen Sie also evtl. vorhanden Speicher, den
  2706.                        Sie für den Dialog reserviert haben,
  2707.                        freigeben.
  2708.  
  2709.                        Vor dieser Meldung wird SG_POSX und ...Y noch
  2710.                        aufgerufen.
  2711.  
  2712.                        Siehe auch \#action\#
  2713.  
  2714. - SG_KEY               Über die Funktion \#TellKeyStrokes\# können
  2715.                        Sie festlegen, ob Sie Tastendrücke erhalten
  2716.                        wollen, um z.b. die Cursortasten abzufragen.
  2717.                        Der Tastendruck wird Ihnen erst gemeldet, wenn
  2718.                        SysGem ihn schon für den Dialog ausgewertet
  2719.                        hat.
  2720.  
  2721.                        'button' enthält den Scancode der gedrückten
  2722.                        Taste, special aus \#DIALOG_INFO\# den Status
  2723.                        der Sondertasten.
  2724.  
  2725.                        Bei einem Rückgabewert von SG_KEYCONT wird
  2726.                        der Tastendruck weitergeleitet.
  2727.  
  2728.                        Siehe auch \#action\#
  2729.  
  2730. - SG_MENU              Ein Eintrag im Fenstermenü wurde angewählt.
  2731.                        'button' enthält den Index des Eintrages.
  2732.  
  2733.                        Siehe auch \#action\#
  2734.  
  2735. - SG_UNTOP             Der Fensterdialog wurde in den Hintergrund
  2736.                        gelegt.
  2737.  
  2738.                        Siehe auch \#action\#
  2739.  
  2740. - SG_TOP               Der Fensterdialog wurde zum obersten Fenster
  2741.                        ernannt.
  2742.  
  2743.                        Siehe auch \#action\#
  2744.  
  2745. - SG_INVISIBLE         Der Prozess, zu dem das Fenster gehört, wurde
  2746.                        ausgeblendet (z.Z. nur Mag!X). Das Fenster ist
  2747.                        unsichtbar, bzw. es befindet sich nicht mehr
  2748.                        im sichtbaren Bereich des Bildschirms. Diese
  2749.                        Meldung wird auch verschickt, wenn das Fenster
  2750.                        Iconifiziert wurde.
  2751.  
  2752.                        Geben Sie SG_ABORT zurück, können Sie das aus-
  2753.                        blenden des Fensters verhindern.
  2754.  
  2755.                    --> Alle Timer- und Redraw-Aktionen, die dieses
  2756.                        Fenster betreffen, sind _sofort_ einzustellen.
  2757.  
  2758.                        Siehe auch \#action\#
  2759.  
  2760. - SG_VISIBLE           Das Gegenstück. Der Prozess, bzw. das Fenster
  2761.                        wurde wieder eingeblendet.
  2762.  
  2763.                        Siehe auch \#action\#
  2764.  
  2765. - SG_DRAGDROP          Objekte wurden via Drag & Drop auf das Fenster
  2766.                        gezogen. Näheres siehe unter \#DRAG_DROP\#.
  2767.  
  2768.                        Siehe auch \#action\#
  2769.  
  2770. - SG_SLID_...          Wird aufgerufen, wenn der Benutzer in einer
  2771.                        Sliderbox scrollt. 'msg' enthält dann ja
  2772.                        nach Aktion folgende Werte:
  2773.  
  2774.                        SG_SLID_UP    - Eine Zeile nach oben
  2775.                        SG_SLID_DN    - Eine Zeile nach unten
  2776.                        SG_SLID_MV    - Via Slider verschoben
  2777.                        SG_SLID_PGUP  - Seite nach oben
  2778.                        SG_SLID_PGDN  - Seite nach unten
  2779.  
  2780.                        'button' enthält jeweils die Nummer der ersten
  2781.                        Zeile, die dann (nach der Rückkehr) in der
  2782.                        Sliderbox zu sehen ist.
  2783.  
  2784.                        dialog_info.special enthält die Boxnummer der
  2785.                        Sliderbox, so daß - wenn sich mehrere in einem
  2786.                        Dialog befinden sollten - bekannt ist, welche
  2787.                        denn nun gemeint ist.
  2788.  
  2789. Als Rückgabewerte stehen Ihnen folgende zur Verfügung:
  2790.  
  2791.  
  2792. - SG_CLOSE             Das Fenster soll geschlossen werden.
  2793.  
  2794. - SG_REDRAW            Das Fenster wird neu gezeichnet.
  2795.  
  2796. - SG_TERM              Das Programm wird beendet. Ist identisch mit
  2797.                        einem Aufruf von \#TerminateSysGem\#.
  2798.  
  2799. - SG_CONT              Weitermachen!
  2800.  
  2801. - SG_ABORT             Bei Fenstermangel soll die Darstellung des
  2802.                        Dialogs abgebrochen werden.
  2803.  
  2804. - SG_KEYUSED           Tastendruck wurde von der Funktion
  2805.                        ausgewertet. Er braucht nicht mehr
  2806.                        weitergeleitet werden.
  2807.  
  2808. - SG_KEYCONT           Tastendruck an nächste Ebene weiterleiten.
  2809.  
  2810. \end
  2811.  
  2812.  
  2813.  
  2814. screen ( sensitive ( "DRAG_DROP" ))
  2815. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  2816. ----------------------------------------------------------------------
  2817.  
  2818. typedef struct
  2819.   {
  2820.     BOOL        gemini;
  2821.     LONG        data_type;
  2822.     UBYTE       *data;
  2823.     LONG        data_len;
  2824.     UBYTE       data_id  [128];
  2825.     UBYTE       filename [128];
  2826.     INT         x;
  2827.     INT         y;
  2828.     INT         state;
  2829.     INT         obj;
  2830.     LONG        id;
  2831.   } DRAG_DROP;
  2832.  
  2833.  
  2834. gemini          \#TRUE\#, wenn die Nachricht von Gemini kam, \#FALSE\#, wenn
  2835.                 von MiNT.
  2836.  
  2837. data_type       Typ-Id von MiNT.
  2838.  
  2839. data            Zeiger auf die Daten, die übertragen wurden.
  2840.  
  2841. data_len        Länge von data. Nur belegt, wenn die Nachricht von
  2842.                 MiNT kam, bei Gemini entspricht die Länge = strlen (
  2843.                 data );
  2844.  
  2845. data_id         Klassifizierung der Daten von MiNT.
  2846.  
  2847. filename        Filename von Irgendwas. Kommt von MiNT.
  2848.  
  2849. x, y            Koordinaten der Maus.
  2850.  
  2851. state           Status der Sondertasten.
  2852.  
  2853. obj             Ist != -1, wenn die Maus über einem Objekt im
  2854.                 Fenster losgelassen wurde.
  2855.  
  2856. id              enthält die Id des Baumes, wenn obj != -1.
  2857.  
  2858. \end
  2859.  
  2860.  
  2861. screen ( sensitive ( "WINDOW_INFO" ),
  2862.          sensitive ( "pos_x" ),
  2863.          sensitive ( "pos_y" ))
  2864. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  2865. ----------------------------------------------------------------------
  2866.  
  2867. typedef struct
  2868.   {
  2869.     LONG        id;
  2870.     LONG        pos_x;
  2871.     LONG        pos_y;
  2872.     LONG        doc_x;
  2873.     LONG        doc_y;
  2874.     INT         scroll;
  2875.     INT         handle;
  2876.     INT         key;
  2877.     INT         state;
  2878.     INT         mTitle;
  2879.     INT         mItem;
  2880.     INT         mx, my;
  2881.     LONG        line;
  2882.     LONG        column;
  2883.     BYTE        *line_ptr;
  2884.     \#RECT\#        work_area;
  2885.     RECT        draw_area;
  2886.     RECT        clip;
  2887.     VOID        *user;
  2888.     LONG        obj_id;
  2889.     INT         item;
  2890.     \#DRAG_DROP\#   *dd;
  2891.   } WINDOW_INFO;
  2892.  
  2893.  
  2894. Mittels der Struktur WINDOW_INFO erhalten Sie alle notwendigen
  2895. Informationen, um einen Fensterbereich neu zu zeichnen oder auf
  2896. Ereignisse von SysGem zu reagieren. Die Parameter haben dabei
  2897. folgende Bedeutung:
  2898.  
  2899. - handle        ist das handle des Fensters, auf das sich das
  2900.                 Ereignis bezieht, oder es gibt das Fenster an,
  2901.                 welches neu zu zeichnen ist.
  2902.  
  2903. - id            enthält die Id des Fensters, welches Sie beim
  2904.                 Öffnen angegeben haben.
  2905.  
  2906.                 Ist das Handle des Fensters 0 (Desktop), enthält
  2907.                 die Id immer 'DESK'.
  2908.  
  2909. - doc_x
  2910. - doc_y         enthalten die Grösse des Documents.
  2911.  
  2912. - pos_x
  2913. - pos_y         enthalten die Position der linken oberen Ecke des
  2914.                 Dokuments, das im Fenster sichtbar ist.
  2915.  
  2916. - key           enthält den Scancode der Taste.
  2917.  
  2918. - state         enthält den Status der Sondertasten.
  2919.  
  2920. - mTitle        enthält den Index des Menütitels.
  2921.  
  2922. - mItem         enthält den Index des angewählten Menüeintrags.
  2923.  
  2924. - mx
  2925. - my            enthält die Position der Maus auf dem Bildschirm.
  2926.  
  2927. - line          Die Zeile, in die geklickt wurde oder -1L, wenn sich
  2928.                 an dieser Stelle keine Textzeile befindet
  2929.  
  2930.                 Siehe auch: \#SG_LCLICK1\#
  2931.  
  2932. - column        Die Spalte, in die geklickt wurde oder -1L, wenn sich
  2933.                 an dieser Stelle kein Zeichen befindet (z.b. wenn die
  2934.                 Zeile zu kurz ist)
  2935.  
  2936.                 Siehe auch: \#SG_LCLICK1\#
  2937.  
  2938. - line_ptr      Zeiger auf das [0]-Element des Strings oder NULL.
  2939.  
  2940.                 Siehe auch: \#SG_LCLICK1\#
  2941.  
  2942. - scroll        siehe bei \#redraw\#. Nur dort belegt.
  2943.  
  2944. - work_area     enthält die Position und Ausmasse des ***
  2945.                 Arbeitsbereiches *** des Fensters 'handle'.
  2946.  
  2947. - draw_area     enthält die Position und Ausmasse des Arbeitsbereiches
  2948.                 ohne die eventuell eingelinkten Bäume.
  2949.  
  2950. - clip          enthält die Koordinaten eines evtl. gesetzten
  2951.                 Clip-Rechtecks.
  2952.  
  2953. - user          enthält den Zeiger, den Sie beim Öffnen angegeben
  2954.                 haben.
  2955.  
  2956. - obj_id        Bei einem Klick auf einen mit \#LinkTree\#
  2957.                 gebundenen Baum steht hier die Id des Baumes.
  2958.  
  2959. - item          Das Objekt, dass bei 'obj_id' angeklickt wurde.
  2960.  
  2961. - dd            Daten für Drag & Drop. Siehe \#DRAG_DROP\#.
  2962.  
  2963.  
  2964. \end
  2965.  
  2966. screen ( sensitive ( "TellKeyStrokes" ))
  2967. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  2968. ----------------------------------------------------------------------
  2969.  
  2970. Prototyp: VOID TellKeyStrokes ( BOOL tell );
  2971.  
  2972.  
  2973. Übergeben Sie \#TRUE\#, werden die Tastendrücke an Ihre Dialogroutinen
  2974. (\#dfunc\#) weitergeleitet.
  2975.  
  2976. Bei \#FALSE\# unterbleiben sie. Da es eine Menge Rechenzeit kostet, jede
  2977. Taste zu melden, sollten Sie sich überlegen, ob Sie die Tasten auch
  2978. wirklich brauchen.
  2979.  
  2980. \end
  2981.  
  2982.  
  2983. screen ( sensitive ( "HandleSysGem" ))
  2984. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  2985. ----------------------------------------------------------------------
  2986.  
  2987. Prototyp: VOID HandleSysGem ( VOID );
  2988.  
  2989.  
  2990. Diese Funktion ist das 'Gehirn' von SysGem und muss wenigstens
  2991. einmal aufgerufen werden. Alle Funktionen Ihres Programms werden
  2992. von dieser Funktion gesteuert.
  2993.  
  2994. Soll Ihr Programm terminieren, so können Sie SysGem mit einem
  2995. Aufruf von \#TerminateSysGem\# dazu bewegen.
  2996.  
  2997. Erhält SysGem aus irgendeinem Anlass die Meldung, zu terminieren
  2998. (MiNT kann ja so eine Meldung verschicken), so kehrt SysGem von
  2999. sich aus zurück.
  3000.  
  3001. Beispiel:
  3002.  
  3003. INT main ( VOID )
  3004.  
  3005. {
  3006.   if ( \#Init_GEM\# ( ... ) > 0 )
  3007.     {
  3008.       ...
  3009.       HandleSysGem ();
  3010.       ...
  3011.       \#Exit_GEM\# ();
  3012.     }
  3013.   return ( 0 );
  3014. }
  3015.  
  3016. \end
  3017.  
  3018. screen ( sensitive ( "TerminateSysGem" ))
  3019. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3020. ----------------------------------------------------------------------
  3021.  
  3022. Prototyp: VOID TerminateSysGem ( VOID );
  3023.  
  3024.  
  3025. Veranlasst SysGem, die Kontrolle wieder an das Programm abzugeben.
  3026.  
  3027. Wurde Ihr Programm als ACC geladen, wird der Aufruf von dieser
  3028. Funktion ignoriert, da sich ein ACC ja niemals terminieren kann.
  3029.  
  3030. Erhält SysGem als ACC eine SIGQUIT oder SIGTERM Nachricht (siehe
  3031. auch \#Signale\#), so ruft SysGem die unter 'acc_close' (\#SetAccProc\#)
  3032. angegebene Funktion auf.
  3033.  
  3034.  
  3035. \end
  3036.  
  3037. screen ( sensitive ( "RedrawArea" ))
  3038. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3039. ----------------------------------------------------------------------
  3040.  
  3041. Prototyp: VOID RedrawArea ( INT handle, \#RECT\# *rect );
  3042.  
  3043.  
  3044. Setzt eine Nachricht ab, den Bereich 'rect' des Fensters mit der
  3045. Kennung 'handle' neuzuzeichnen.
  3046.  
  3047. \end
  3048.  
  3049. screen ( sensitive ( "SetWindowName" ))
  3050. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3051. ----------------------------------------------------------------------
  3052.  
  3053. Prototyp: VOID SetWindowName ( INT handle, BYTE *name );
  3054.  
  3055.  
  3056. Setzt den Namen des Fensters 'handle'.
  3057.  
  3058. \end
  3059.  
  3060. screen ( sensitive ( "SetWindowInfo" ))
  3061. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3062. ----------------------------------------------------------------------
  3063.  
  3064. Prototyp: VOID SetWindowInfo ( INT handle, BYTE *info );
  3065.  
  3066.  
  3067. Setzt die Infozeile des Fensters 'handle'.
  3068.  
  3069. \end
  3070.  
  3071. screen ( sensitive ( "GetHandle" ))
  3072. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3073. ----------------------------------------------------------------------
  3074.  
  3075. Prototyp: INT GetHandle ( LONG id );
  3076.  
  3077.  
  3078. Liefert das handle des Fensters, dass unter der Id 'id' bekannt ist.
  3079. Die Funktion liefert -1, wenn es kein Fenster mit dieser Id gibt.
  3080.  
  3081. \end
  3082.  
  3083. screen ( sensitive ( "GetWindowId" ))
  3084. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3085. ----------------------------------------------------------------------
  3086.  
  3087. Prototyp: LONG GetWindowId ( INT handle );
  3088.  
  3089.  
  3090. Liefert die Id des Fensters mit der Kennung 'handle'. Gibt es das
  3091. handle nicht, liefert die Funktion 0.
  3092.  
  3093. \end
  3094.  
  3095. screen ( sensitive ( "TopWindow" ))
  3096. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3097. ----------------------------------------------------------------------
  3098.  
  3099. Prototyp: BOOL TopWindow ( INT handle );
  3100.  
  3101.  
  3102. Macht das Fenster mit der Kennung 'handle' zum obersten, aktiven
  3103. Fenster. Dies geschieht allerdings nur, wenn das Fenster, dass vor
  3104. dem Aufruf aktuell war, nicht den 'force'-Status hatte. Hat(te) es
  3105. diesen, wird der Aufruf dieser Funktion ignoriert.
  3106.  
  3107. \end
  3108.  
  3109. screen ( sensitive ( "GetTopWindow" ))
  3110. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3111. ----------------------------------------------------------------------
  3112.  
  3113. Prototyp: INT GetTopWindow ( VOID );
  3114.  
  3115.  
  3116. Liefert das handle des obersten, aktiven Fensters.
  3117.  
  3118. \end
  3119.  
  3120. screen ( sensitive ( "CloseWindow" ))
  3121. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3122. ----------------------------------------------------------------------
  3123.  
  3124. Prototyp: BOOL CloseWindow ( INT handle );
  3125.  
  3126.  
  3127. Schickt dem Fenster mit der Kennung 'handle' die Aufforderung, das
  3128. Fenster zu schliessen (SG_END, -1), was aber noch lange nicht
  3129. bedeutet, dass das Fenster dieser Aufforderung nachkommen muss!
  3130.  
  3131. Die Funktion liefert \#TRUE\#, wenn das Fenster wirklich geschlossen wurde,
  3132. \#FALSE\# sonst.
  3133.  
  3134. \end
  3135.  
  3136. screen ( sensitive ( "CloseAllWindows" ))
  3137. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3138. ----------------------------------------------------------------------
  3139.  
  3140. Prototyp: VOID CloseAllWindows ( VOID );
  3141.  
  3142.  
  3143. Alle dem Prozess gehörenden Fenster werden geschlossen. Ohne Wenn und
  3144. Aber. Es werden SG_QUIT Nachrichten verschickt.
  3145.  
  3146. Diese Funktion wird auch von \#Exit_GEM\# aufgerufen.
  3147.  
  3148. \end
  3149.  
  3150. screen ( sensitive ( "RectIntersect" ))
  3151. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3152. ----------------------------------------------------------------------
  3153.  
  3154. Prototyp: VOID RectIntersect ( \#RECT\# *r1, \#RECT\# *r2 );
  3155.  
  3156.  
  3157. Prüft, ob sich zwei Rechtecke überlappen und liefert in 'r2' die
  3158. Ausmasse dieses Bereichs.
  3159.  
  3160. \end
  3161.  
  3162. screen ( sensitive ( "SetDeskTopMenu" ))
  3163. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3164. ----------------------------------------------------------------------
  3165.  
  3166. typedef INT (*APROC)(INT msg, WINDOW_INFO *inf );
  3167.  
  3168. Prototyp: BOOL SetDeskTopMenu ( OBJECT *tree, APROC action );
  3169.  
  3170.  
  3171. Setzt die Menüzeile, auf die 'tree' zeigt. Die action-Routine
  3172. wird mit \#SG_MENU\# aufgerufen, wenn der Benutzer einen Eintrag ausge-
  3173. wählt hat.
  3174.  
  3175. \end
  3176.  
  3177. screen ( sensitive ( "RemDeskTopMenu" ))
  3178. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3179. ----------------------------------------------------------------------
  3180.  
  3181. Prototyp: VOID RemDeskTopMenu ( VOID );
  3182.  
  3183.  
  3184. Entfernt die mit \#SetDeskTopMenu\# gesetzte Menüzeile wieder.
  3185. Diese Funktion wird auch von \#Exit_GEM\# aufgerufen.
  3186.  
  3187. \end
  3188.  
  3189. screen ( sensitive ( "COOKIE" ))
  3190. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3191. ----------------------------------------------------------------------
  3192.  
  3193. Die Cookie-Struktur ist wie folgt definiert:
  3194.  
  3195. typedef struct
  3196.   {
  3197.     LONG        id;     /* Identifikation des Cookies  */
  3198.     LONG        value;  /* Der Wert des Cookies        */
  3199.   } COOKIE;
  3200.  
  3201.  
  3202. \end
  3203.  
  3204. screen ( sensitive ( "SetCookie" ))
  3205. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3206. ----------------------------------------------------------------------
  3207.  
  3208. Prototyp: BOOL SetCookie ( LONG id, LONG value );
  3209.  
  3210.  
  3211. Setzt einen Eintrag mit der Id 'id' und dem Wert 'value' in den
  3212. Cookie-Jar ein. Existiert die Id bereits, wird nur 'value' geändert.
  3213.  
  3214. Die Funktion liefert \#TRUE\#, wenn der Cookie eingetragen oder der
  3215. Wert geändert wurde, \#FALSE\# sonst.
  3216.  
  3217. Cookie-Struktur: \#COOKIE\#
  3218.  
  3219. \end
  3220.  
  3221. screen ( sensitive ( "GetCookie" ))
  3222. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3223. ----------------------------------------------------------------------
  3224.  
  3225. Prototyp: BOOL GetCookie ( LONG id, LONG *value );
  3226.  
  3227.  
  3228. Sucht, ob der Cookie 'id' vorhanden ist. Wenn ja, liefert die Funktion
  3229. \#TRUE\# und in 'value' befindet sich der Wert des Cookies.
  3230.  
  3231. --> Bei dieser Funktion ist es auch möglich, für 'value' NULL zu
  3232.     übergeben. In diesem Fall wird natürlich kein Wert geliefert,
  3233.     man kann aber einfach das Vorhandensein eines Cookies abfragen.
  3234.  
  3235.     Beispiel:
  3236.  
  3237.     if ( GetCookie ( 'MagX', NULL ))
  3238.       {
  3239.         ...
  3240.       }
  3241.  
  3242. Cookie-Struktur: \#COOKIE\#
  3243.  
  3244. \end
  3245.  
  3246. screen ( sensitive ( "RemoveCookie" ))
  3247. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3248. ----------------------------------------------------------------------
  3249.  
  3250. Prototyp: VOID RemoveCookie ( LONG id );
  3251.  
  3252.  
  3253. Diese Funktion entfernt den Cookie 'id' aus der Liste.
  3254.  
  3255.  
  3256. Cookie-Struktur: \#COOKIE\#
  3257.  
  3258. \end
  3259.  
  3260. screen ( sensitive ( "SetTimer" ))
  3261. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3262. ----------------------------------------------------------------------
  3263.  
  3264. Prototyp: VOID SetTimer ( INT ms_low, INT ms_high );
  3265.  
  3266.  
  3267. Setzt die Zeitspanne, nach der ein Timer-Event ausgelöst werden soll.
  3268. Es wird dabei die Routine aufgerufen, die Sie mit \#SetProcTimer\#
  3269. angemeldet haben.
  3270.  
  3271. \end
  3272.  
  3273. screen ( sensitive ( "SetProcTimer" ))
  3274. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3275. ----------------------------------------------------------------------
  3276.  
  3277. Prototyp: VOID SetProcTimer ( VOID (*proc)(VOID) );
  3278.  
  3279.  
  3280. Meldet eine Funktion an, die aufgerufen wird, wenn ein Timerevent
  3281. eingetreten ist. Die Zeitspanne können Sie mit \#SetTimer\#
  3282. festlegen.
  3283.  
  3284. \end
  3285.  
  3286. screen ( sensitive ( "SetDeskTop" ))
  3287. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3288. ----------------------------------------------------------------------
  3289.  
  3290. typedef INT (*APROC)(INT msg, \#WINDOW_INFO\# *inf );
  3291.  
  3292. Prototyp: BOOL SetDeskTop ( OBJECT *tree, INT first, APROC \#action\# );
  3293.                                            \#action\# : APROC ) : integer;
  3294.  
  3295.  
  3296. Meldet einen eigenen Desktop an. Dabei zeigt 'tree' auf den Baum, der
  3297. als neuer Desktop angemeldet werden soll, 'first' ist das erste
  3298. Objekt, ab dem gezeichnet werden soll und action die Funktion,
  3299. der Benutzeraktivitäten gemeldet werden.
  3300.  
  3301. Konnte der neue Desktop angemeldet werden, liefert die Funktion \#TRUE\#,
  3302. ansonsten \#FALSE\#.
  3303.  
  3304. \end
  3305.  
  3306. screen ( sensitive ( "RemoveDeskTop" ))
  3307. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3308. ----------------------------------------------------------------------
  3309.  
  3310. Prototyp: VOID RemoveDeskTop ( VOID );
  3311.  
  3312.  
  3313. Meldet den mittels \#SetDeskTop\# angemeldeten Desktop wieder ab.
  3314. Wird automatisch von \#Exit_GEM\# aufgerufen.
  3315.  
  3316. \end
  3317.  
  3318. screen ( sensitive ( "PopUp" ))
  3319. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3320. ----------------------------------------------------------------------
  3321.  
  3322. Prototyp: INT PopUp (OBJECT *tree, INT x, INT y, INT start, INT first);
  3323.  
  3324.  
  3325. Stellt ein Pop-Up-Menü dar. Ein PopUp besteht normalerweise aus einer
  3326. Box (Gem: G_BOX) in der sich mehrere andere Objekte (norm. STRING oder
  3327. TEXT) befinden.
  3328.  
  3329. Diese Box befindet sich im Baum 'tree' und hat die Objektnummer 'start'.
  3330.  
  3331. 'x' und 'y' geben die Koordinaten an, an der der Popup erscheinen
  3332. soll. Übergeben Sie -1, erscheint es an der aktuellen Mausposition.
  3333.  
  3334. 'first' ist die Objektnummer des Elements, dass beim Erscheinen auf
  3335. dem Bildschirm unter der Maus liegen soll. Ist kein solches Element
  3336. von Ihnen gewünscht, übergeben Sie einfach -1.
  3337.  
  3338. Die Funktion liefert als Ergebnis die Objektnummer des Elements, dass
  3339. vom Benutzer angeklickt wurde oder -1, wenn er kein Element gewählt
  3340. hat (also ausserhalb des PopUps geklickt hat).
  3341.  
  3342. Es können nur solche Objekte angeklickt werden, die mit dem SELECTABLE
  3343. Flag versehen sind.
  3344.  
  3345. \end
  3346.  
  3347. screen ( sensitive ( "SetAccProc" ))
  3348. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3349. ----------------------------------------------------------------------
  3350.  
  3351. typedef VOID (*TPROC)(VOID);
  3352.  
  3353. Prototyp: VOID SetAccProc ( TPROC acc_open, TPROC acc_close );
  3354.  
  3355. Wurde Ihr Programm als Accessory gestartet und klickt der Benutzer
  3356. den Acc-Eintrag an, wird die unter 'acc_open' angegebene Routine
  3357. aufgerufen.
  3358.  
  3359. Die Funktion 'acc_close' wird nur dann angesprungen, wenn GEM dazu
  3360. den Befehl gibt. In diesem Fall schliesst SysGem alle Fenster des ACC,
  3361. bevor die unter 'acc_close' angegebene Funktion aufgerufen wird.
  3362.  
  3363. Für nicht benötigte Funktionen kann auch NULL übergeben werden.
  3364.  
  3365. \end
  3366.  
  3367. screen ( sensitive ( "LinkSlider" ))
  3368. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3369. ----------------------------------------------------------------------
  3370.  
  3371. Prototyp: BOOL LinkSlider ( OBJECT *tree, INT up, INT dn, INT show,
  3372.                             INT hide, INT max, INT box, VOID *buffer,
  3373.                             INT len, INT format );
  3374.  
  3375.  
  3376. Diese Funktion meldet für die Dialogbox, auf die 'tree' zeigt, eine
  3377. Sliderbox an. Die Verwaltung wird komplett von SysGem übernommen.
  3378.  
  3379. Die einzelnen Texteinträge sollen in aufsteigender Reihenfolge vor-
  3380. liegen. In Interface z. B. mittels 'Sortieren' machbar.
  3381.  
  3382. Die Parameter:
  3383.  
  3384. - tree          Zeiger auf die Dialogbox, in der die Sliderbox liegt
  3385.  
  3386. - up            Objektnummer des Objektes für Pfeil-hoch. Sollte mit
  3387.                 TOUCHEXIT versehen werden.
  3388.  
  3389. - dn            Objektnummer des Objektes für Pfeil-runter. Sollte
  3390.                 mit TOUCHEXIT versehen werden.
  3391.  
  3392. - show          Objektnummer des Objektes, das den beweglichen
  3393.                 Slider repräsentiert. Sollte mit TOUCHEXIT versehen
  3394.                 werden.
  3395.  
  3396. - hide          Objektnummer des Objektes, in dem der bewegliche
  3397.                 Slider liegt. Sollte ebenfalls mit TOUCHEXIT
  3398.                 versehen werden.
  3399.  
  3400. - max           Die aktuelle Anzahl der Texteinträge der Box. Diese
  3401.                 Angabe ist _unabhängig_ von der Anzahl der wirklich
  3402.                 sichtbaren Einträge. Können in der Sliderbox 10 Zeilen
  3403.                 Text dargestellt werden, es sind aber nur 2 derzeit
  3404.                 belegt, so übergeben Sie bei 'max' eine 2.
  3405.  
  3406. - box           Die Objektnummer der Box, die alle sichtbaren
  3407.                 Texteinträge umgibt.
  3408.  
  3409. - buffer        Zeiger auf einen Speicherbereich oder Array, dass die
  3410.                 darzustellenden Einträge enthält.
  3411.  
  3412. - len           Die Länge einer Bufferzeile in Bytes. Sollte mit
  3413.                 'sizeof' ermittelt werden!
  3414.  
  3415. - format        Füllt die Zeilen bis 'format' Zeichen mit Leerzeichen
  3416.                 auf. Wenn Sie dies nicht wünschen, übergeben Sie
  3417.                 einfach eine 0.
  3418.  
  3419.  
  3420.     חללללללללללללללללללללללללללללללללללללללללללללללללללללללללללל†
  3421.     ´                       Dialogbox                           ´
  3422.     וגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגÀ
  3423.     ´                                                           ´
  3424.     ´    םגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגאג™        ´
  3425.     ´    ø Testzeile 1, die hier ein wenig länger istø⇧ø<- 'up' ´
  3426.     ´    ø Testzeile 2, die hier ein wenig länger istבגœ        ´
  3427.     ´    ø Testzeile 3, die hier ein wenig länger istø ø        ´
  3428.     ´    ø ^                                        ^ø ø<-'hide'´
  3429.     ´    ø ijגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגךø ø        ´
  3430.     ´    ø                   'len'                   øõø        ´
  3431.     ´    ø                                           øõø<-'show'´
  3432.     ´    ø                                           øõø        ´
  3433.     ´    ø                                           בגœ        ´
  3434.     ´    ø                                           ø⇩ø<-'dn'  ´
  3435.     ´    ijגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגIJגך        ´
  3436.     ´       ^                                                   ´
  3437.     ´ 'box'גך                                                   ´
  3438.     ´                                                           ´
  3439.     זללללללללללללללללללללללללללללללללללללללללללללללללללללללללללל¶
  3440.  
  3441. \end
  3442.  
  3443. screen ( sensitive ( "UnLinkSlider" ))
  3444. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3445. ----------------------------------------------------------------------
  3446.  
  3447. Prototyp: BOOL UnLinkSlider ( OBJECT *tree, INT box );
  3448.  
  3449.  
  3450. "Entfernt" die Sliderbox, deren 'Box' im Baum 'tree' liegt, aus der
  3451. Verwaltung.
  3452.  
  3453. \end
  3454.  
  3455. screen ( sensitive ( "AddSliderItem" ))
  3456. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3457. ----------------------------------------------------------------------
  3458.  
  3459. Prototyp: BOOL AddSliderItem ( OBJECT *tree, INT box, INT anz_items );
  3460.  
  3461.  
  3462. Verändert die Anzahl der Elemente der Sliderbox 'box' im Baum
  3463. 'tree'. Zu den maximalen Elementen werden 'anz_items' Einträge
  3464. addiert. Wollen Sie Einträge löschen, übergeben Sie die Anzahl
  3465. einfach negativ.
  3466.  
  3467. \end
  3468.  
  3469. screen ( sensitive ( "RedrawSliderBox" ))
  3470. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3471. ----------------------------------------------------------------------
  3472.  
  3473. Prototyp: VOID RedrawSliderBox ( OBJECT *tree, INT box );
  3474.  
  3475.  
  3476. Zeichnet die Texteinträge in der Sliderbox neu, ohne die Anzahl der
  3477. Einträge zu verändern.
  3478.  
  3479. \end
  3480.  
  3481. screen ( sensitive ( "SetSliderPos" ))
  3482. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3483. ----------------------------------------------------------------------
  3484.  
  3485. Prototyp: INT SetSliderPos ( OBJECT *tree, INT box, INT pos, BOOL draw );
  3486.  
  3487.  
  3488. Diese Funktion setzt die erste Zeile innerhalb einer Sliderbox.
  3489. Übergeben Sie z. B. für 'pos' eine 5, so würde die 5. Zeile des
  3490. Buffers als erste Zeile in der Sliderbox erscheinen.
  3491.  
  3492. Die Funktion kümmert sich automatisch um das Neuzeichnen des Inhaltes,
  3493. sofern 'draw' \#TRUE\# ist.
  3494.  
  3495. Übergeben Sie für 'pos' einen negativen Wert (-1), dann erhalten Sie
  3496. die aktuelle Position zurück; ansonsten wird die alte Position zurück-
  3497. geliefert.
  3498.  
  3499. \end
  3500.  
  3501. screen ( sensitive ( "Initialisierung" ))
  3502. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3503. ----------------------------------------------------------------------
  3504.  
  3505. Die Programminitialisierung von SysGem gestaltet sich sehr einfach.
  3506. Verfahren Sie einfach nach folgendem Schema:
  3507.  
  3508. חלללללללללללללללללללללללללללללללללללללללללללללללללללללללללללללללללללל†
  3509. ´ \#Init_GEM\# liefert Wert > 0 ?                                        ´
  3510. וגגגגגגאגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגÀ
  3511. ´ Ja   ø Initialisierung beim GEM war erfolgreich!                   ´
  3512. ´      ø \#acc_entry\# ist -2 ?                                          ´
  3513. ´      בגגגגגגאגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגÀ
  3514. ´      ø Ja   ø Als Programm gestartet!                              ´
  3515. ´      ø      ø Resource laden (\#LoadResource\#) fehlgeschlagen?        ´
  3516. ´      ø      בגגגגגגאגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגÀ
  3517. ´      ø      ø Ja   ø \#Exit_GEM\# aufrufen                             ´
  3518. ´      ø      ø      ø Programm terminieren                          ´
  3519. ´      ø      ø      בגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגÀ
  3520. ´      ø      ø Nein ø Resource-Adressen ermitteln (\#RscAdr\#)          ´
  3521. ´      ø      ø      ø Dialoge mit \#NewDialog\# anmelden                ´
  3522. ´      ø      ø      ø Hauptfunktion aufrufen, bzw. Hauptfenster     ´
  3523. ´      ø      ø      ø     öffnen (\#WindowDialog\#)                     ´
  3524. ´      ø      ø      ø \#HandleSysGem\# aufrufen                         ´
  3525. ´      ø      ø      ø \#Exit_GEM\# aufrufen                             ´
  3526. ´      ø      ø      ø Programm terminieren                          ´
  3527. ´      ø      הללללללנללללללללללללללללללללללללללללללללללללללללללללללל¨
  3528. ´      ø Nein ø Als Desk-Acc gestartet!                              ´
  3529. ´      ø      ø Resource laden (\#LoadResource\#) fehlgeschlagen?        ´
  3530. ´      ø      בגגגגגגאגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגÀ
  3531. ´      ø      ø Ja   ø In einer Endlosschleife evnt_timer aufrufen   ´
  3532. ´      ø      ø      בגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגÀ
  3533. ´      ø      ø Nein ø Resource-Adressen ermitteln                   ´
  3534. ´      ø      ø      ø Dialoge mit \#NewDialog\# anmelden                ´
  3535. ´      ø      ø      ø \#SetAccProc\# mit Werten versorgen               ´
  3536. ´      ø      ø      ø \#HandleSysGem\# aufrufen                         ´
  3537. ´      הללללללנללללללנללללללללללללללללללללללללללללללללללללללללללללללל¨
  3538. ´ Nein ø \#Init_GEM\# lieferte -1 ?                                      ´
  3539. ´      בגגגגגגאגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגגÀ
  3540. ´      ø Ja   ø Programm ist schon im Speicher vorhanden             ´
  3541. ´      ø      ø Programm terminieren                                 ´
  3542. ´      ø      הלללללללללללללללללללללללללללללללללללללללללללללללללללללל¨
  3543. ´      ø Nein ø Initialisierung fehlgeschlagen                       ´
  3544. ´      ø      ø Programm terminieren                                 ´
  3545. זללללללנללללללנלללללללללללללללללללללללללללללללללללללללללללללללללללללל¶
  3546.  
  3547. \end
  3548.  
  3549. screen ( sensitive ( "ScrollWindow" ))
  3550. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3551. ----------------------------------------------------------------------
  3552.  
  3553. Prototyp: VOID ScrollWindow ( INT handle, INT what );
  3554.  
  3555.  
  3556. Mit dieser Funktion ist es möglich, das Scrollen von Fensterinhalten
  3557. vom Programm aus zu steuern.
  3558.  
  3559. Es wird in die durch 'what' beschriebene Richtung jeweils um die Anzahl
  3560. von Pixel gescrollt, die als Scrollgrösse \#scroll_x\#, \#scroll_y\# bei
  3561. \#OpenWindow\# angegeben wurde.
  3562.  
  3563.  
  3564. - handle        enthält das Handle des Fensters, auf das sich die
  3565.                 Scroll-Operation beziehen soll
  3566.  
  3567. - what          SCROLL_UP       Scrollt um \#scroll_y\# Pixel nach oben
  3568.                 SCROLL_DOWN     Scrollt um \#scroll_y\# Pixel nach unten
  3569.                 SCROLL_LEFT     Scrollt um \#scroll_x\# Pixel nach links
  3570.                 SCROLL_RIGHT    Scrollt um \#scroll_x\# Pixel nach rechts
  3571.                 SCROLL_PG_LEFT  Eine Seite nach links
  3572.                 SCROLL_PG_RIGHT Eine Seite nach rechts
  3573.                 SCROLL_PG_UP    Eine Seite nach oben
  3574.                 SCROLL_PG_DOWN  Eine Seite nach unten
  3575.  
  3576. \end
  3577.  
  3578. screen ( sensitive ( "SetWindowParm" ))
  3579. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3580. ----------------------------------------------------------------------
  3581.  
  3582. Prototyp: LONG SetWindowParm ( INT handle, INT what, LONG value );
  3583.  
  3584.  
  3585. Über diese Funktion können Dokumentgrösse und Position des Ausschnitts
  3586. von einem Fenster abgefragt sowie gesetzt werden.
  3587.  
  3588. - handle        Das Handle des Fensters
  3589.  
  3590. - what          SET_X   Setzt die x-Position (\#pos_x\#) des sichtbaren
  3591.                         Dokumentsausschnitt. 'value' enthält den
  3592.                         neuen Wert.
  3593.  
  3594.                         Wird für 'value' -1L übergeben, liefert die
  3595.                         Funktion die aktuelle x-Position zurück.
  3596.  
  3597.                 SET_Y   Setzt die y-Position (\#pos_y\#) des sichtbaren
  3598.                         Dokumentsausschnitt. 'value' enthält den
  3599.                         neuen Wert.
  3600.  
  3601.                         Wird für 'value' -1L übergeben, liefert die
  3602.                         Funktion die aktuelle y-Position zurück.
  3603.  
  3604.                 SET_W   Setzt die Documentbreite (\#doc_x\#) des
  3605.                         Dokuments. 'value' enthält den neuen Wert.
  3606.  
  3607.                         Wird für 'value' -1L übergeben, liefert die
  3608.                         Funktion die aktuelle Dokumentbreite zurück.
  3609.  
  3610.                 SET_H   Setzt die Documenthöhe (\#doc_y\#) des
  3611.                         Dokuments. 'value' enthält den neuen Wert.
  3612.  
  3613.                         Wird für 'value' -1L übergeben, liefert die
  3614.                         Funktion die aktuelle Dokumenthöhe zurück.
  3615.  
  3616. \end
  3617.  
  3618. screen ( sensitive ( "SetEditField" ))
  3619. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3620. ----------------------------------------------------------------------
  3621.  
  3622. Prototyp: VOID SetEditField ( OBJECT *tree, INT field );
  3623.  
  3624.  
  3625. Diese Funktion setzt den Text-Cursor in das Editfeld mit der Objekt-
  3626. nummer 'field' im Baum 'tree'.
  3627.  
  3628. \end
  3629.  
  3630. screen ( sensitive ( "ScrollSlider" ))
  3631. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3632. ----------------------------------------------------------------------
  3633.  
  3634. Prototyp: VOID ScrollSlider ( OBJECT *tree, INT box, INT what );
  3635.  
  3636.  
  3637. Mit dieser Funktion ist es möglich, in den Sliderboxen Programm-
  3638. gesteuert zu scrollen.
  3639.  
  3640. Die Sliderbox befindet sich im Baum 'tree' und die Textbox hat die
  3641. Objektnummer 'box'.
  3642.  
  3643. Für 'what' sind folgende Kommandos möglich:
  3644.  
  3645. - SCROLL_UP     Die Einträge der Sliderbox scrollen um einen Eintrag
  3646.                 nach oben.
  3647.  
  3648. - SCROLL_DOWN   Die Einträge der Sliderbox scrollen um einen Eintrag
  3649.                 nach unten.
  3650.  
  3651.  
  3652. \end
  3653. screen ( sensitive ( "SetMessageProc" ))
  3654. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3655. ----------------------------------------------------------------------
  3656.  
  3657. typedef   LONG (*MPROC)(UBYTE msg, UBYTE sub, LONG from, LONG parm );
  3658.  
  3659. Prototyp: VOID SetMessageProc ( MPROC proc );
  3660.  
  3661.  
  3662. Setzt die Funktion, die bei einem Eintreffen einer SysGem Nachricht
  3663. aufgerufen wird.
  3664.  
  3665. \end
  3666. screen ( sensitive ( "SendSgMsg" ))
  3667. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3668. ----------------------------------------------------------------------
  3669.  
  3670. Prototyp: VOID SendSgMsg ( INT msg, INT sub, LONG dest, LONG parm );
  3671.  
  3672.  
  3673. Diese Funktion schickt eine Nachricht an ein anderes Programm.
  3674.  
  3675. dest    Id des Programms, an das die Nachricht gerichtet ist
  3676.  
  3677. parm    Parameter; abhängig von der Nachricht
  3678.  
  3679. msg     kann folgende Werte annehmen:
  3680.  
  3681.         MSG_TERM        Programm soll terminieren
  3682.  
  3683.         MSG_OPEN        Fenster öffnen. Die Id des Fensters steht
  3684.                         in 'parm'.
  3685.  
  3686.         MSG_CLOSE       Fenster schliessen. Die Id des Fensters
  3687.                         steht in 'parm'.
  3688.  
  3689.         MSG_USER        Frei verfügbar.
  3690.  
  3691.         MSG_SYSTEM      Kommunikation mit SysInfo. 'sub' kann dabei
  3692.                         folgende Werte annehmen:
  3693.  
  3694.                 4       Ausgabe auf das Clipboard.
  3695.  
  3696.                 5       Laufwerk öffnen. Das Laufwerk steht dabei
  3697.                         im unteren Byte von 'parm'. (A=0, B=1,...)
  3698.  
  3699.                 SysInfo schickt daraufhin als Ergebnis die Msg wieder
  3700.                 zurück; sub = 0 --> Fehler
  3701.                         sub = 1 --> Alles klar.
  3702.  
  3703.         MSG_NEW         Ein neues Programm hat sich angemeldet.
  3704.                         Die Id des Programms steht in 'from'.
  3705.  
  3706.         MSG_QUIT        Ein Programm hat sich verabschiedet.
  3707.                         Die Id des Programms steht in 'from'.
  3708.  
  3709. ----------------------------------------------------------------------
  3710. SysInfo benutzt dabei die Msg 0x7777. Dabei steht die Nachricht im
  3711. unteren Wort von msg [3], die 'sub' meldung im oberen Wort. Die Ab-
  3712. sender-Id in 4 und 5, der Parameter in 6 und 7 jeweils high-low Wort.
  3713.  
  3714.  
  3715. \end
  3716. screen ( sensitive ( "SendMsg" ))
  3717. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3718. ----------------------------------------------------------------------
  3719.  
  3720. Prototyp: INT SendMsg ( LONG dest, INT msg, INT sub, LONG parm,
  3721.                         INT timeout, LONG *result );
  3722.  
  3723.  
  3724. Exakt wie \#SendSgMsg\#, nur mit dem Unterschied, daß bis zu 'timeout'
  3725. Sekunden auf eine Antwort gewartet wird. Ein evtl. Rückgabeparameter
  3726. wird dann in 'result' zurückgeliefert. result kann auch NULL sein.
  3727.  
  3728. Die Funktion liefert folgende Rückgaben:
  3729.  
  3730. -2    Timeout
  3731. -1    Programm, an das die Nachricht ist, existiert nicht
  3732.  0    Fehler
  3733.  1    Alles klar
  3734.  
  3735. \end
  3736.  
  3737. screen ( sensitive ( "ProgramExist" ))
  3738. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3739. ----------------------------------------------------------------------
  3740.  
  3741. Prototyp: INT ProgramExist ( LONG prg_id );
  3742.  
  3743.  
  3744. Prüft, ob sich das Programm mit der Kennung 'prg_id' im Speicher
  3745. befindet. Die Funktion liefert die AES-Id, wenn das Programm gefunden
  3746. wurde, -1 sonst.
  3747.  
  3748. \end
  3749.  
  3750. screen ( sensitive ( "SelectMenu" ))
  3751. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3752. ----------------------------------------------------------------------
  3753.  
  3754. Prototyp: VOID SelectMenu ( INT item, BOOL invert );
  3755.  
  3756.  
  3757. Diese Funktion sucht den Menütitel, in dem das Item 'item' sich be-
  3758. findet. Ist 'invert' \#TRUE\#, wird der entsprechende Menütitel invers
  3759. dargestellt, ansonsten deselektiert.
  3760.  
  3761. \end
  3762.  
  3763. screen ( sensitive ( "UseRightButton" ))
  3764. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3765. ----------------------------------------------------------------------
  3766.  
  3767. Prototyp: VOID UseRightButton ( BOOL use );
  3768.  
  3769.  
  3770. Für manche Anwendungen kann es sinnvoll sein, bestimmte Dinge auch
  3771. mit der rechten Maustaste anwählen zu können. So sind z. B. zwei
  3772. verschiedene Funktionen für einen Button möglich.
  3773.  
  3774. Normalerweise wird die Benutzung der rechten Maustaste in Dialogen
  3775. von SysGem unterbunden (Voreinstellung).
  3776.  
  3777. Übergeben Sie der Funktion \#TRUE\#, reagiert SysGem auch auf die rechte
  3778. Maustaste in Dialogen. Buttons usw. lassen sich dann also mit beiden
  3779. Tasten steuern.
  3780.  
  3781. \end
  3782.  
  3783. screen ( sensitive ( "DelDialog" ))
  3784. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3785. ----------------------------------------------------------------------
  3786.  
  3787. Prototyp: BOOL DelDialog ( OBJECT *tree );
  3788.  
  3789.  
  3790. Diese Funktion entfernt den vorher mit \#NewDialog\# angemeldeten
  3791. Dialog wieder aus der Verwaltung und liefert \#TRUE\#, wenn es geklappt
  3792. hat, \#FALSE\# sonst.
  3793.  
  3794. \end
  3795.  
  3796. screen ( sensitive ( "UseHighButtons" ))
  3797. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3798. ----------------------------------------------------------------------
  3799.  
  3800. Prototyp: VOID UseHighButtons ( BOOL use_high );
  3801.  
  3802.  
  3803. Auf mehrfachen Wunsch wurde diese Funktion implementiert. Sie erhöht
  3804. die Höhe der Alertbuttons um ein halbes Zeichen.
  3805.  
  3806. Standardmässig sind die Buttons ein Zeichen hoch.
  3807.  
  3808. \end
  3809.  
  3810. screen ( sensitive ( "LinkTree" ))
  3811. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3812. ----------------------------------------------------------------------
  3813.  
  3814. Prototyp: BOOL LinkTree ( LONG win_id, OBJECT *tree, LONG id, INT pos );
  3815.  
  3816.  
  3817. Bindet einen Baum an ein mit \#OpenWindow\# geoeffnetes Fenster.
  3818.  
  3819. win_id          Id des Fensters, an das der Baum gebunden werden
  3820.                 soll.
  3821.  
  3822. tree            Zeiger auf den Baum.
  3823.  
  3824. id              Id, die der Baum erhalten soll. Wird bei \#SG_BUTTON\#
  3825.                 wieder geliefert.
  3826.  
  3827. pos             Legt fest, wo der Baum im Fenster erscheinen soll:
  3828.  
  3829.                 - LINK_LEFT
  3830.                 - LINK_RIGHT
  3831.                 - LINK_TOP
  3832.                 - LINK_BOTTOM
  3833.  
  3834.                 SysGem kümmert sich automatisch um das Neuzeichnen
  3835.                 und die Größenanpassung an das Fenster. Die minimale
  3836.                 Größe des Fensters sollte mit \#SetWinMinSize\#
  3837.                 festgelegt werden.
  3838.  
  3839. \end
  3840.  
  3841. screen ( sensitive ( "IsMenuKey" ))
  3842. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3843. ----------------------------------------------------------------------
  3844.  
  3845. Prototyp: INT IsMenuKey ( OBJECT *tree, INT scan, INT state );
  3846.  
  3847.  
  3848. Diese Funktion prueft, ob der Tastendruck auf einen Menue-Shortcut
  3849. passt. Es werden nur die Control- und Alternate Tasten unterstuetzt.
  3850.  
  3851. Als Zeichen fuer Control wird '^' (dez: 94), fuer
  3852. Alternate '◆' (dez: 7) erwartet.
  3853.  
  3854. - tree     Zeiger auf die Menuezeile, die 'untersucht' werden soll
  3855. - scan     Der Scancode der Taste
  3856. - state    Der Status der Sondertasten
  3857.  
  3858. Die Funktion liefert den Index des Menueeintrags, wenn ein solcher
  3859. gefunden wurde oder -1, wenn kein Menueeintrag passt.
  3860.  
  3861. \end
  3862.  
  3863. screen ( sensitive ( "RedrawDialog" ))
  3864. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3865. ----------------------------------------------------------------------
  3866.  
  3867. Prototyp: VOID RedrawDialog ( OBJECT *tree );
  3868.  
  3869.  
  3870. Diese Funktion zeichnet den Dialog 'tree' neu. Dieser muss sich
  3871. allerdings schon auf dem Bildschirm befinden.
  3872.  
  3873. Diese Funktion muss aufgerufen werden, wenn ein Dialog neu gezeichnet
  3874. werden soll. ShowDialog sichert beim Aufruf z. B. den Dialog-
  3875. hintergrund, weshalb die Funktion nur einmal aufgerufen werden sollte.
  3876.  
  3877. RedrawDialog kann beliebig oft aufgerufen werden.
  3878.  
  3879. \end
  3880.  
  3881. screen ( sensitive ( "RedrawWindow" ))
  3882. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3883. ----------------------------------------------------------------------
  3884.  
  3885. Prototyp: VOID RedrawWindow ( INT handle );
  3886.  
  3887.  
  3888. Diese Funktion zeichnet den Inhalt des Fensters mit dem Handle 'handle'
  3889. neu.
  3890.  
  3891. \end
  3892.  
  3893. screen ( sensitive ( "SetAlertTitle" ))
  3894. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3895. ----------------------------------------------------------------------
  3896.  
  3897. Prototyp: VOID SetAlertTitle ( BYTE *string );
  3898.  
  3899.  
  3900. Setzt den Fenstertitel des Alerts. Hier kann ein max. 20-Zeichen langer
  3901. String übergeben werden, der anstatt von "Alert" erscheint. Soll die
  3902. Programm-Id nicht erscheinen, setzen Sie einfach als erstes Zeichen
  3903. ein '|' vor den Namen.
  3904.  
  3905. \end
  3906.  
  3907. screen ( sensitive ( "LinkList" ))
  3908. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3909. ----------------------------------------------------------------------
  3910.  
  3911. Prototyp: BYTE *LinkList ( LONG win_id, BYTE *text );
  3912.  
  3913.  
  3914. "Hängt" eine Textliste in ein Fenster ein. Die Lib kümmert sich dann
  3915. selbstständig um die Anpassung des Dokumentbereichs und um das Scrollen
  3916. an sich.
  3917.  
  3918. Dabei wird 'text' in eine interne Liste kopiert. Die Funktion liefert
  3919. einen Zeiger auf das [0] Element des Textes zurück. Der Text selbst
  3920. beginnt allerdings erst bei [1]. [0] ist für die Angabe von Stati
  3921. reserviert. Ist das Byte >= 0, interpretiert SysGem den Wert als An-
  3922. gabe für vst_effects und stellt die Zeile auch wie angegeben dar. Ist
  3923. der Wert < 0, ignoriert SysGem den Wert und nimmt als Effekt 0 an.
  3924.  
  3925. Auf diese Weise können Sie ganz einfach auch eigene Stati verwalten.
  3926.  
  3927. Die Funktion liefert NULL, wenn die Liste nicht angelegt oder der
  3928. Text nicht übernommen werden konnte.
  3929.  
  3930.  
  3931. Siehe auch: \#AddToList\# \#ChgInList\# \#DelInList\# \#do_qsort\#
  3932.  
  3933. \end
  3934.  
  3935. screen ( sensitive ( "AddToList" ))
  3936. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3937. ----------------------------------------------------------------------
  3938.  
  3939. Prototyp: BYTE *AddToList ( LONG win_id, BYTE *text );
  3940.  
  3941.  
  3942. Hängt 'text' als neue Zeile an die Liste an. Rückgabe ist wie bei
  3943. \#LinkList\# beschrieben.
  3944.  
  3945. Die Funktion passt den Dokumentbereich des Fensters automatisch an.
  3946. Hat die längste Zeile im Text eine Länge von 60 Zeichen und linken
  3947. Sie eine Zeile mit 200 Zeichen dazu, werden die Scrollbalken automatisch
  3948. angepasst.
  3949.  
  3950.  
  3951. Siehe auch: \#LinkList\# \#ChgInList\# \#DelInList\# \#do_qsort\#
  3952.  
  3953. \end
  3954.  
  3955. screen ( sensitive ( "ChgInList" ))
  3956. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3957. ----------------------------------------------------------------------
  3958.  
  3959. Prototyp: BYTE *ChgInList ( LONG win_id, UINT line, BYTE *text );
  3960.  
  3961.  
  3962. Ersetzt den Text in Zeile 'line' durch 'text' im Fenster 'win_id'.
  3963.  
  3964. Ist 'text' == NULL, liefert die Funktion den Zeiger auf das
  3965. [0] Element des bereits bestehenden Textes oder NULL, wenn es die
  3966. Zeile nicht gibt.
  3967.  
  3968. Wurde der Text übernommen, liefert die Funktion die neue Adresse
  3969. des Strings.
  3970.  
  3971.  
  3972. Siehe auch: \#LinkList\# \#AddToList\# \#DelInList\# \#do_qsort\#
  3973.  
  3974. \end
  3975.  
  3976. screen ( sensitive ( "OpenLogWindow" ))
  3977. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  3978. ----------------------------------------------------------------------
  3979.  
  3980. Prototyp: BOOL OpenLogWindow ( LONG win_id, BYTE *title, BYTE *info,
  3981.                   INT columns, INT rows, INT x, INT y, APROC \#action\# );
  3982.  
  3983.  
  3984. Öffnet ein Fenster, in das mit \#wprintf\# geschrieben werden kann.
  3985.  
  3986. Parameter:
  3987.  
  3988. - win_id     Id des Fensters. Siehe auch \#OpenWindow\#.
  3989.  
  3990. - title      Der Fenstertitel. Siehe auch \#OpenWindow\#.
  3991.  
  3992. - info       Der Text für die Infozeile. Ist keine gewünscht, über-
  3993.              geben Sie einfach einen Leerstring ("").
  3994.  
  3995. - columns    Anzahl der Spalten, die dargestellt werden sollen.
  3996.              Der Wert muß >= 3 sein.
  3997.  
  3998. - rows       Anzahl der Zeilen, die dargestellt werden sollen.
  3999.              Der Wert muß >= 3 sein.
  4000.  
  4001. - x, y       Koordinaten der linken oberen Ecke, an der das Fenster
  4002.              erscheinen soll.
  4003.  
  4004. - action     Die \#action\# Funktion.
  4005.  
  4006.  
  4007. Die Funktion liefert \#TRUE\#, wenn das Fenster geöffnet wurde.
  4008.  
  4009. \end
  4010.  
  4011. screen ( sensitive ( "wprintf" ))
  4012. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  4013. ----------------------------------------------------------------------
  4014.  
  4015. Prototyp: VOID wprintf ( LONG win_id, BYTE *format, ... );
  4016.  
  4017.  
  4018. Schreibt in das (mit \#OpenLogWindow\# geöffnete) Fenster mit der
  4019. id 'Id' den angegeben String. Der Format-String ist identisch
  4020. mit dem bei printf. Es gibt aber noch folgende ESC-Sequenzen, die
  4021. wprintf interpretiert:
  4022.  
  4023.  ESC p  - Fett ein
  4024.  ESC q  - Fett aus
  4025.  ESC +  - Unterstreichen ein
  4026.  ESC -  - Unterstreichen aus
  4027.  ESC (  - Kursiv ein
  4028.  ESC )  - Kursiv aus
  4029.  ESC e  - Cursor an
  4030.  ESC f  - Cursor aus
  4031.  ESC E  - ClearScreen; Cursor auf Ursprung (x = 0, y = 0)
  4032.  
  4033.  
  4034. \end
  4035.  
  4036. screen ( sensitive ( "wcls" ))
  4037. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  4038. ----------------------------------------------------------------------
  4039.  
  4040. Prototyp: VOID wcls ( LONG win_id );
  4041.  
  4042.  
  4043. Löscht das Fenster und setzt den Cursor auf 0, 0.
  4044.  
  4045. \end
  4046.  
  4047. screen ( sensitive ( "wposxy" ))
  4048. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  4049. ----------------------------------------------------------------------
  4050.  
  4051. Prototyp: VOID wposxy ( LONG win_id, INT x, INT y );
  4052.  
  4053.  
  4054. Setzt den Cursor auf die Position x, y.
  4055.  
  4056. \end
  4057.  
  4058. screen ( sensitive ( "wgetxy" ))
  4059. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  4060. ----------------------------------------------------------------------
  4061.  
  4062. Prototyp: VOID wgetxy ( LONG win_id, INT *x, INT *y );
  4063.  
  4064.  
  4065. Liefert die Position des Cursors (Ursprung: 0, 0)
  4066.  
  4067. \end
  4068.  
  4069. screen ( sensitive ( "wgetchar" ))
  4070. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  4071. ----------------------------------------------------------------------
  4072.  
  4073. Prototyp: BYTE wgetchar ( LONG win_id, INT x, INT y, INT *effect );
  4074.                        var effect : integer ) : char;
  4075.  
  4076. Liefert das Zeichen, daß sich an Position x, y befindet. Ist 'effect'
  4077. != NULL, wird hier der Wert der Stati zurückgegeben. Dieser Wert ist
  4078. bitcodiert und identisch wie bei vst_effects.
  4079.  
  4080.  
  4081. \end
  4082.  
  4083. screen ( sensitive ( "HideCursor" ))
  4084. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  4085. ----------------------------------------------------------------------
  4086.  
  4087. Prototyp: VOID HideCursor ( LONG win_id );
  4088.  
  4089.  
  4090. Schaltet den Textcursor in diesem Fenster aus.
  4091.  
  4092.  
  4093. Siehe auch: \#OpenLogWindow\# \#wprintf\#
  4094.  
  4095. \end
  4096.  
  4097. screen ( sensitive ( "ShowCursor" ))
  4098. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  4099. ----------------------------------------------------------------------
  4100.  
  4101. Prototyp: VOID ShowCursor ( LONG win_id );
  4102.  
  4103.  
  4104. Schaltet den Textcursor in diesem Fenster ein.
  4105.  
  4106.  
  4107. Siehe auch: \#OpenLogWindow\# \#wprintf\#
  4108.  
  4109. \end
  4110.  
  4111. screen ( sensitive ( "IsVisible" ))
  4112. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  4113. ----------------------------------------------------------------------
  4114.  
  4115. Prototyp: BOOL IsVisible ( INT handle );
  4116.  
  4117.  
  4118. Liefert \#TRUE\#, wenn der Arbeitsbereich des angegebenen Fensters voll-
  4119. ständig sichtbar ist. \#FALSE\# sonst.
  4120.  
  4121. \end
  4122.  
  4123. screen ( sensitive ( "SetWinMinSize" ))
  4124. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  4125. ----------------------------------------------------------------------
  4126.  
  4127. Prototyp: VOID SetWinMinSize ( LONG win_id, INT w, INT h );
  4128.  
  4129.  
  4130. setzt die Minimale Größe des Fensters. Hilfreich, wenn Bäume drin sind.
  4131.  
  4132.  
  4133. Siehe auch: \#LinkTree\#
  4134.  
  4135. \end
  4136. screen ( sensitive ( "SetWinMaxSize" ))
  4137. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  4138. ----------------------------------------------------------------------
  4139.  
  4140. Prototyp: VOID SetWinMaxSize ( LONG win_id, INT w, INT h );
  4141.  
  4142.  
  4143. setzt die Maximale Größe des Fensters. Hilfreich, wenn Bäume drin sind.
  4144.  
  4145.  
  4146. Siehe auch: \#LinkTree\#
  4147.  
  4148. \end
  4149.  
  4150. screen ( sensitive ( "ChangeButton" ))
  4151. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  4152. ----------------------------------------------------------------------
  4153.  
  4154. Prototyp: VOID ChangeButton ( OBJECT *tree, INT obj, BYTE *text, BOOL draw );
  4155.  
  4156.  
  4157. Ändert einen Buttontext nach 'text' und zeichnet diesen - falls 'draw'
  4158. \#TRUE\# ist - gleichzeitig neu.
  4159.  
  4160. Beispiel:
  4161. =========
  4162.  
  4163. ChangeButton ( rsc_dialog, OK, "[Suchen", \#TRUE\# );
  4164.  
  4165. ändert den Text des Buttons OK in "Suchen" und zeichnet diesen
  4166. gleichzeitig wieder neu.
  4167.  
  4168. \end
  4169.  
  4170. screen ( sensitive ( "Display" ))
  4171. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  4172. ----------------------------------------------------------------------
  4173.  
  4174. Prototyp: UINT Display ( BYTE *fname, BYTE *wname, BYTE *winfo,
  4175.                          INT len, LONG win_id, INT x, INT y, INT w,
  4176.                          INT h, APROC \#action\# );
  4177.  
  4178.  
  4179. Lädt eine Datei und stellt diese in einem Fenster dar. Die Lib kümmert
  4180. sich selbstständig um das Scrollen und um eventuelle Redraws.
  4181.  
  4182. Parameter:
  4183.  
  4184. - fname     Name und Pfad der TEXT-Datei, die geladen werden soll.
  4185.  
  4186. - wname     Der Name des Fensters
  4187.  
  4188. - winfo     Die Infozeile. Wenn nicht gewünscht, einfach einen Leer-
  4189.             string ("") übergeben.
  4190.  
  4191. - len       gibt an, wie lang eine Zeile maximal sein darf
  4192.  
  4193. - win_id    Die Id des Fensters
  4194.  
  4195. - x, y,
  4196.   w, h      Die Koordinate, wo und wie das Fenster erscheinen soll
  4197.  
  4198. - action    Die \#action\# Funktion.
  4199.  
  4200.  
  4201. Die Funktion liefert die Anzahl der eingelesenen Zeilen oder 0 im
  4202. Fehlerfall.
  4203.  
  4204. Siehe auch: \#LinkList\# \#AddToList\#
  4205.  
  4206. \end
  4207.  
  4208. screen ( sensitive ( "DelInList" ))
  4209. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  4210. ----------------------------------------------------------------------
  4211.  
  4212. Prototyp: BOOL DelInList ( LONG win_id, UINT line );
  4213.  
  4214.  
  4215. Löscht die Zeile 'line' aus der Textliste und liefert \#TRUE\#, wenn
  4216. sie entfernt wurde.
  4217.  
  4218. Die Funktion passt den Dokumentbereich des Fensters automatisch an.
  4219. Hat die längste Zeile im Text eine Länge von 200 Zeichen und löschen
  4220. Sie diese Zeile und ist dann die längste Zeile 60 Zeichen lang, werden
  4221. die Scrollbalken automatisch angepasst und das Fenster redrawed.
  4222.  
  4223. Siehe auch: \#LinkList\# \#AddToList\# \#do_qsort\#
  4224.  
  4225. \end
  4226.  
  4227. screen ( sensitive ( "CountLines" ))
  4228. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  4229. ----------------------------------------------------------------------
  4230.  
  4231. Prototyp: UINT CountLines ( LONG win_id );
  4232.  
  4233.  
  4234. Liefert die Anzahl der Textzeilen im Fenster 'win_id'.
  4235.  
  4236.  
  4237. Siehe auch: \#LinkList\# \#AddToList\# \#DelInList\# \#do_qsort\#
  4238.  
  4239. \end
  4240. screen ( sensitive ( "do_qsort" ),
  4241.          sensitive ( "cmp_strings_up" ),
  4242.          sensitive ( "cmp_strings_dn" ))
  4243. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  4244. ----------------------------------------------------------------------
  4245.  
  4246. Prototyp: typedef INT  (*CPROC)(BYTE *str1, BYTE *str2 );
  4247.  
  4248.           VOID do_qsort ( LONG win_id, CPROC compare );
  4249.  
  4250.  
  4251. Sortiert die Zeilen im Fenster 'win_id'. SysGem bietet für 'compare'
  4252. schon zwei vordefinierte Funktionen:
  4253.  
  4254. cmp_strings_up   - Sortiert die Zeilen in Aufsteigender Reihenfolge
  4255. cmp_strings_dn   - Sortiert die Zeilen in Absteigender Reihenfolge
  4256.  
  4257. Eigene Funktionen können leicht angegeben werden. Die Funktion erhält
  4258. 2 Zeiger auf die Strings - auf Element [1].
  4259.  
  4260. Wird für 'compare' NULL übergeben, nimmt SysGem die Funktion
  4261. cmp_strings_up.
  4262.  
  4263. Die Funktion muß die Werte wie bei   qsort   beschrieben zurückliefern.
  4264.  
  4265.  
  4266.  
  4267. Siehe auch: \#LinkList\# \#AddToList\# \#DelInList\#
  4268.  
  4269. \end
  4270. screen ( sensitive ( "Cycle" ))
  4271. \#SysGem\# V1.20                                              \#Gesamt-Index\#
  4272. ----------------------------------------------------------------------
  4273.  
  4274. Prototyp: INT Cycle ( OBJECT *tree, INT obj, OBJECT *pop_tree, INT first,
  4275.                     INT last, INT *ret );
  4276.  
  4277.  
  4278. Diese Funktion realisiert Circle-Buttons, d.h., die Funktion "scrollt"
  4279. alle Einträge durch. Baut auf \#PopUp\# auf. "Scrollt" die Einträge
  4280. eines PopUp's durch, und uebernimmt nach Abschluss den Text des neuen
  4281. Objekts und schreibt ihn dann wieder in 'obj'. So kann man sich eine
  4282. Menge Arbeit sparen.
  4283.  
  4284. Die Parameter:
  4285.  
  4286. - tree       Zeiger auf den dialog, in dem der Button liegt, der
  4287.              das Popup ausloest, bzw. in dem der Text des Circle-Buttons
  4288.              liegt.
  4289.  
  4290. - obj        Die Objektnummer dieses Textes.
  4291.  
  4292. - pop_tree   Zeiger auf den Baum fuer das Popup.
  4293.  
  4294. - first      Objektnummer des ersten Textes
  4295.  
  4296. - last       Objektnummer des letzten Textes
  4297.  
  4298. - ret        Enthält die Position (Objektnummer) des Textes, der danach
  4299.              im Textfeld stehen soll. Beim Aufruf wird 'ret' incrementiert
  4300.              und der Text ausgelesen; anschließend in tree [obj] wieder
  4301.              geschrieben und redrawed. ret enthält dann die Objektnummer
  4302.              des Textes, der gerade dargestellt wird.
  4303.  
  4304. Die Funktion liefert 'ret' zurück.
  4305.  
  4306.  
  4307. Siehe auch: \#xPopUp\#
  4308.  
  4309. \end
  4310.  
  4311.