home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / library / dos / menu / kiwi / history.doc next >
Encoding:
Text File  |  1993-07-27  |  12.7 KB  |  291 lines

  1. In diesem File finden Sie Hinweise und Tips, die im Handbuch nicht
  2. vermerkt sind.
  3.  
  4. 14.04.1991
  5. ScreenManager:
  6. In dem ScreenManager sind zwei weiter Feldtypen hinzugekommen.
  7. 1. Buttons
  8. Ab sofort können Sie auch den Feldtyp K benutzen. Dieser Typ erzeugt einen
  9. Kontrollknopf oder Button. Dabei können Sie in der Parameterdefinition 
  10. den Buttontext, den auszulösenden Tastaturcode und eine auszuführende
  11. Funktion angegeben. Der Knopf erscheint in der Maske als umrandeter Text.
  12. Ist der Knopf aktiv, erscheint der Rand doppelt, sonst einfach. Je nach
  13. gesetzter Positionmarke ist der Knopf invertiert oder nicht.
  14. Z. B. Sie können einen Knopf HILFE setzen, in der Definition geben Sie
  15. den Tastaturcode F1 an, und der Anwender erhält auf Buttondruck die
  16. Hilfe eingeblendet (sofern vorhanden ).
  17. Der Knopftyp erhält kein Argument uber die Funktionsparameterliste bei
  18. Aufruf der Funktion scanf_mask. 
  19. Dieser Feldtyp ist nicht verfügbar für print_mask, und auch nicht
  20. verfügbar über eine Formatbeschreibung bei Aufruf, sondern nur durch
  21. Eingabe innerhalb des ScreenManagers.
  22. Die Festlegungen sind nunmehr in Masken untergebracht. Deshalb müssen folgende
  23. Dateien in das Heimverzeichnis des Screenmanagers kopiert werden.
  24. SM.EXE SM.WLB SM.HLP SM.ERR SM.FST
  25.  
  26.  
  27. 2. Listenfelder
  28. Listenfelder werden mit dem Buchstaben P angewählt. Diese Feldtypen erwarten
  29. ein Argument vom TYP LISTE, welches in kiwi_inc.h definiert worden ist. In 
  30. diesem Struct wird ein Pointer auf das Itemfeld, die Anzahl Items und die
  31. Grösse des Scrollfeld innerhalb der Maske bereitgehalten. Als Ausgabe steht
  32. ein Integer bereit, der die Angabe der Auswahl ermöglicht.
  33. Listenfelder können z.B. zur Dateiauswahl benutzt werden. In den Beispielen
  34. ist eine mögliche Anwendung vorbereitet (list.exe).
  35.  
  36. Dieser Feldtyp ist nicht verfügbar für print_mask, und auch nicht
  37. verfügbar über eine Formatbeschreibung bei Aufruf, sondern nur durch
  38. Eingabe innerhalb des ScreenManagers.
  39.  
  40. 3. Radiobuttons
  41. Radiobuttons haben den Buchstaben R. damit können Sie eine exclusive
  42. Auswahl aus mehreren Möglichkeiten treffen. es kann immer nur ein Item 
  43. aktiv sein. Der Datentyp ist vom Typ radio, der in KIWI_INC.H definiert
  44. ist. Innerhalb des Screenmanagers geben Sie die Position, die Anzahl Reihen
  45. und Spalten und die Abstände zwischen den Einträgen ein. Bei Abarbeitung der 
  46. Maske wird der vaiablen vom Typ radio der jeweils gültige Wert zugewiesen.
  47. Auf der Demodisk finden Sie im Verzeichnis DEMO, die datei file.c .
  48. Dort ist ein konkretes Beispiel angegeben, wie die Radiobuttos arbeiten.
  49.  
  50.  
  51.  
  52. 14.04.1991
  53. Neue Funktionen:
  54.  
  55. int get_file_list(char *key, char **data);
  56. int reset_get_file_list();
  57. Diese Funktion übergibt alle zum Schlüssel passenden Dateien, in einem
  58. Char-array, auf das der char Pointer Data gerichtet wird. Der Datenbereich auf den data
  59. zeigt, wird von dieser Funktion dynamisch angefordert, und muss später wieder
  60. freigegeben werden. (reset_get_file_list);
  61.  
  62. z: B.  
  63. int anzahl;
  64. char *data;
  65.  
  66. anzahl=get_file_list("*.c",&data);
  67. if(anzahl)zeige_dateien(data);
  68. reset_get_file_list();
  69.  
  70.  
  71. Dieses Fragment erzeugt eine Liste aller Dateien mit Endung .C in einem Block,
  72. auf den data zeigt. Die Einträge sind pro Datei 12 Zeichen, mit 2 Leerzeichen 
  73. Trennung.
  74.  
  75.  
  76. 20.04.1991
  77. Fehler im Handbuch betreffend Funktion file_browse
  78.  
  79. der Aufruf im Handbuch ist falsch. Der richtige Aufruf lautet
  80.  
  81.     browse_file(char *datei_name,int breite);
  82.  
  83. datei_name ist der komplette Pfadname der Datei
  84. breite ist die Beite der maximalen Darstellung des virtuellen Screens
  85. (zwischen 80 und 265 Zeichen).
  86.  
  87.  
  88.  
  89. 24.04.1991
  90.  
  91. In den Druckerbeschreibungsdateien können nun bis zu 50
  92. Austauschzeichen definiert werden. Z.B.:
  93. Mittels des Schlüsselworts
  94. EXCHANGE        179,58;
  95. EXCHANGE        196,48;
  96.  
  97. werden alle Zeichen 179, und 196 auf dem Druckerport durch 58, bzw 48 ersetzt.
  98. Dadurch können Beschreibungsdateien z. B. für Laserdrucker erstellt werden, 
  99. die einen anderen Zeichensatz benutzen.
  100.  
  101.  
  102.  
  103. 20.6.1991
  104. Neue Funktionen
  105. int count_drive();
  106. int change_drive(int drive);
  107. int get_drive();
  108.  
  109. count_drive liefert die Anzahl der logischen Laufwerke, 
  110. change_drive setzt das aktuelle logische Laufwerk auf drive (a-z)
  111. get_drive liefert den Laufwerksbuchstaben des aktuellen logischen Laufwerks.
  112.  
  113. mkdirall(char *path);
  114.  
  115. mkdirall erzeugt alle Verzeichnisse von path, egal ob diese bereits bestehen 
  116. ob der der Verzeichnisbaum verschachtelt ist.
  117.  
  118. create_hot_area(int num, int xa, int ya, int xe, int ye);
  119. enable_hot_area(int num);
  120. disable_hot_area(int num);
  121.  
  122. create_hot_area erzeugt einen sensitiven Bildschirmbereich, innerhalb derer
  123. eine Betätigung der linken Maustaste zur Auslösung der Tastenkombination key 
  124. führt. Für num gelten 0-9
  125. enable_hot_area schaltet den Status auf aktiv
  126. disable_hot_area schaltet den Status auf inaktiv.
  127.  
  128.  
  129. Die Funktion set_menu akzeptiert 2 neue Parameter.
  130. MENU_HELP bewirkt, das die aktiven Menüpunkte als Hilfsbegriffe gesetzt werden.
  131. NO_MENU_HELP schaltet diesen Mechanismus aus. 
  132. Dadurch können die Aufrufe von set_help_name bei Menüauswahlen minimiert werden.
  133. Der Hilfsbegriff ist der Menüname.
  134.  
  135.  
  136. 20.06.1991   KIWI Soft   J.F.
  137.  
  138.  
  139. int init_slider(char *string,int xpos,int ypos,int laenge, ULONG max);
  140. add_slider(ULONG add);
  141. reset_slider();
  142.  
  143. Diese Funktionen realisieren einen Scrollbar, mit dem man den Ablauf einer
  144. bestimmten Funktion anzeigen kann. Die komplette Anzeige erfolgt in einem
  145. eigenen Window. Mit init_slider erzeugt man das Fenster und initialisiert
  146. die Datenstrukturen. Der String string wird wie bei der Funktion dialog
  147. gehandhabt, er kann also Zeilenvorschübe enthalten. Für xpos und ypos
  148. können auch die Macro AM,AL,AR verwendet werden. Die Länge des Anzeigebalken
  149. wird durch laenge, oder durch die maximale Zeilenlänge von string bestimmt.
  150. Max gibt an, bei wievielen Items 100 Prozentanzeige erreicht sein wird.
  151. Die Funktions add_slider addiert add Items zu der Gesamtzahl Items, die dann
  152. als leuchtbalken proportionaler Länge angezweigt wird. Negaive Parameter sind
  153. nivht möglich. Die Funktion reset_slider löscht das Window und reinitialisiert
  154. Datenstrukturen. Die Funktion ist nicht stapelbar, es kann immer nur ein
  155. Slider angezeigt werden.
  156.  
  157.  
  158. 04.03.1992
  159.  
  160. Die Buttons sind nun einheitlich geregelt für Dialog, Hilfe und Masken.
  161. Dazu wurden 8 Funktion und ein neuer datentyp BUTTON geschaffen.
  162. Es können Buttonmit den Aufruf create_button erzeugt, und mit destroy_button
  163. eliminiert werden. activ_button und passiv_button dienen der Hervorhebung
  164. eines Schalters, während press_button und release_button den Schalter betätigen
  165. bzw wieder loslassen. Mittels der Funktion set_button_mode kann das Aussehen der
  166. Buttons variiert werden. Es stehen KIWI_MODE, BORLAND und MICROSOFT Modi zur
  167. Verfügung. Desweiteren kann mit der Funktion set_button_sound ein Ein- bzw 
  168. Ausschaltklick definiert werden. Dieses jeweils duch die Tonfrequenz und die 
  169. Tondauer. Genaueres bitte in den Funktionsbeschreibungen nachlesen.
  170.  
  171. 18.03.1992
  172.  
  173. Ab sofort steht eine weiter Art der Windowsöffnung zur Verfügung. Mittels
  174. set_window_display_mode und den neuen Parameter EXPLODE und ROW_WISE kann
  175. die Art wie ein Fenster geöffnet wird, verändert werden. Mittels 
  176. set_window_open_delay kann dieser Vorgang verlangsamt werden, damit die
  177. Optik voll zur geltung kommen kann.
  178.  
  179. Die Funktion set_mouse akzeptiert nun zwei weitere Makros. RIGHT_HAND und LEFT_HAND.
  180. LEFT_HAND vertauscht die Mausbuttons links und rechts. RIGHT_HAND setzt diese 
  181. wieder auf default.
  182.  
  183. Die Möglichkeit, bei Menüabfragen das bestehende Window zu nutzen, indem der
  184. Parameter win bei choose_menu und choose_sub_menu !=NULL gesetzt, und somit auf
  185. ein gültiges Window zeigt, mu nun explizit eingeschaltet werden. dazu akzeptiert
  186. die Funktion set_menu 2 neue Parameter. MENU_ENABLE_KEEP schaltet diese 
  187. Möglichkeit ein, MENU_DISABLE_KEEP schaltet diese aus. Default ist ausgeschaltet.
  188. Falls also bei geschachtelten Menüs die Windows stehen bleiben, sollte in der
  189. INIT datei diese Möglichkeit eingeschaltet werden. Siehe auch sm_init.c .
  190.  
  191. Die mask_library kann nun temporär abgeschaltet werden, um z.B. eine Maske
  192. zu laden, die nicht in einer Mask Library gespeichert ist. Dazu dienen die
  193. Funktionen enable_mask_library und disable_mask_library.
  194.  
  195. Der Hintergrund eines Programms kann nun während der Laufzeit gewechselt
  196. werden. Dazu dient die Funktion change_screen_background(UCHAR ch). Dabei
  197. werden alle alten Hintergrundzeichen mit dem neuen zeichen ch ersetzt.
  198. Es können auch Windows offen geöffnet sein.
  199.  
  200. Die Farbtabellen können ebenfalls während der Laufzeit verändert werden. Dazu 
  201. dient die Funktion change_color_table(int nr,UCHAR vg,UCHAR bg,UCHAR ivg, UCHARibg); 
  202. Alle Farben im Bildschirm und in Windows werden dabei geändert. Die Funktion
  203. kann nicht unterscheiden, wenn zwei Farbtabellen die gleichen Fareb benutzen.
  204. Dann werden alle Zeichenfarben geändert, ohne Rücksicht auf die Tabellennummer.
  205.  
  206. 25.03.1992   KIWI SOFT  J.F.
  207.  
  208. Die Funktionen array_get_file und browse_get_file und list_files sind 
  209. umgebaut worden. Diese erlauben nun auch die Anwahl von Verzeichnissen 
  210. und Laufwerken, und somit den Zugriff auf alle Dateien innerhalb des Systems.
  211. Dazu sind einige Änderungen in den Aufrufparametern notwendig.
  212. Die Funktionen array_get_file unbd browse_get_file benötigen nun als
  213. key_string einen Bufferbereich von mindestens DATEI_PFAD_LEN Zeichen.
  214. Da nun die Möglichkeit besteht, den vorgegebenen Bereich zu verlasen, 
  215. schreiben diese Funktionen den endgültig gewählten Verzeichnisbaum in diesen
  216. Buffer hinein. Falls key also ein const char *string auf einen festen String
  217. ist, erfolgt dann eine Zuweisung, die einen Programmabsturz zur Folge haben  
  218. kann (und wird). Der Rüchgabeparameter name ist geblieben. Es wird empfohlen,
  219. nach Aufruf dieser Funktionen den Dateinamen mittels create_file_path 
  220. zusammenzubauen, wobei der entgültige Datenpfadname ein Buffer mit Größe
  221. DATEI_PFAD_NASME_LEN sein muß.
  222. Beispiel:
  223.     char datei[DATEI_NAME_LEN];
  224.     char path[DATEI_PFAD_LEN];
  225.     char pfad[DATEI_PFAD_NAME_LEN];
  226.  
  227.     init_string(datei,sizeof(string));
  228.     init_string(path,sizeof(path));
  229.     init_string(pfad,sizeof(pfad));
  230.  
  231.     strcpy(path,"c:/usr/Jogy/*.c");
  232.     c=array_get_file(datei,path,AM,AM);
  233.     create_file_path(pfad,path,datei);
  234.  
  235. Dann steht in pfad der gültige Pfadname der ausgewählten datei, gleichgültig
  236. ob der Benutzer in dem vorgewählten Verzeichnis c:/usr/Jogy geblieben ist.
  237.  
  238. Die Funktion list_files hat die gleichen Möglichkeiten, dort wird aber der 
  239. neue datenpfad nicht im Schlüssel gespeichert, so das dort nach wir vor
  240. absolute Pfadnamen benutzt werden dürfen.
  241. Die Funktion set_get_file_acces_mask steht zur Verfügung um die Dateierfassung 
  242. zu steuern. Dort können die MACROS GF_FILES, GF_DIRS oder GF_DRIVES mit logischer 
  243. oder Operation benutzt werden. Die Funktion get_get_file_acces_mask übergibt die 
  244. zur zeit gültige Zugriffsmaske.
  245.  
  246.  
  247.  
  248. 14.04.1992
  249. Ab sofort ist der Aufruf der Hilfe und der Fehlermeldungen neu geregelt.
  250. Die Funktion check_if_get_help, die in der init.c vorhanden ist, wird ersatzlos
  251. gestrichen. Die Funktion input ruft nun eine Funktion bei Erkennen der 
  252. Hilfetaste auf, die ihrerseits die Hilfefunktion über einen Funktioinspointer 
  253. aufruft. Dieser Pointer ist normal auf no_help_op gerichtet. Die Funktion 
  254. init_help und init_error biegen diesen Pointer nun auf die Funktion 
  255. get_error_help, die die Hilfe auslößt. Der Umweg über die check_if_get_help  
  256. Funktion kann somit entfallen. Dier Pointer kann auch auf eine eigenen 
  257. Funktion verbogen werden. Dazu steht die Funktion set_help_error_call_func 
  258. zur Verfügung. 
  259.     
  260.     int set_help_error_call_func(int mode, int (*fnk)());
  261.  
  262. Beachten Sie, das Sie innerhalb dieser Funktion nicht mehr get_help oder 
  263. get_error aufrufen dürfen, da Sie sonst in einer Schleife steckenbleiben. 
  264. Wollen Sie die Hilfe aufrufen benutzen Sie get_error_help(int mode) wobei
  265. mode=0 Hilfe und mode01 Fehlermeldung bedeuten.
  266.  
  267.  
  268.  
  269. 15.04.1992
  270. Ab sofort ist der Aufruf des Windowmanagers neu geregelt.
  271. Die Funktion check_window_manager, die in der init.c vorhanden ist, wird ersatzlos
  272. gestrichen. Die Funktion input ruft nun eine Funktion bei Erkennen der 
  273. Windowmanagersituation auf, die ihrerseits den Windowmanager über einen 
  274. Funktioinspointer aufruft. Dieser Pointer ist normal auf no_winman_op 
  275. gerichtet. Die Funktion init_window_manager biegt diesen Pointer nun auf 
  276. die Funktion window_manager, die die Manipulation ausführt. Der Umweg 
  277. über die check_window_manager Funktion kann somit entfallen. 
  278.  
  279.  
  280.  
  281.  
  282. 14.04.1992   KIWI SOFT J.F
  283.  
  284. Um sich über alle angebotenen Funktionen und deren Aufruf ein genaues
  285. Bild zu verschaffen, wird auf die Datei KIWI_PRO.H verwiesen. Dort
  286. sind alle Prototypen aller Funktionen untergebracht.
  287. Neue Funktionen können dort bereits dokumentiert sein, bevor diese
  288. in der Readme oder im Handbuch erscheinen.
  289.  
  290. 20.03.1992
  291.