allegro-C OpenSource
a99 / a99a / a99d / alcarta
Quellcodes für die Erstellung der .exe's unter Windows/VisualStudio 2010
Achtung: NUR die .rc-Datei und program.h sind für a99/alcarta/a99a/a99d unterschiedlich.
Projektdateien (von VisualStudio erstellt und verwaltet)
VC6:
a99.dsw / alcarta.dsw allg. Projektdatei
a99.dsp / alcarta.dsp eine Art make-Datei f. VisualStudio
VC10:
a99.vcxproj / Projektdatei (Struktur XML)
*** Spezifische Dateien
program.h
darin steht, ob es a99, a99a, a99d oder alcarta werden soll
a99.rc (Standard und Demo) / a99a.rc (Alternative) / alcarta.rc
Konfigurierung der Oberflächenobjekte ("resources")
*** Nur diese Dateien sind spezifisch f. a99 bzw. a99a bzw. alcarta,
Achtung: Man kopiert die jeweils benötigte auf den Namen a99.rc
Alle anderen Dateien sind identisch (also die Standard-a99.rc separat halten!)
resource.h
#defines f.d. Oberfl.Objekte (Zuordnung von Nummern zu den symb. Namen aus der .rc)
alcarta und a99a verwenden dieselbe Datei, aber jeweils nicht alle Nummern daraus
Gemeinsame Grundlagen
Diese zwei werden jeweils als Libraries eingebunden, in a99/alcarta ebenso wie in acon und osdp).
Die Quellen liegen in zwei Verzeichnissen, ac15 und aindex, parallel zum Quellenverzeichnis von a99.
ac15 : Klassenbibliothek (KONFIG, RECORD, EXET, INDEX, ABASE)
aindex : Index-Kernfunktionen (Erstellung und Zugriff)
Das eigentliche Programmpaket : Basiert auf Windows Foundation Classes (WFC)
Win-Standard für automatisch erstellte "vorkompilierte Headerdatei" *.pch
stdafx.cpp
stdafx.h
WINDOWS oder UNIX, nur fuer rpnfind.cpp (a99 und alcarta nicht für Linux/UNIX kompilierbar!)
platform.h
Anwendungs-Rahmenklasse f.d. Dialoganwendung (kein Eingriff noetig)
ca99.cpp
ca99.h
Hauptprogramm: darin FLEX-Interpreter, Oeffnen der Unterfenster u.a.
Es handelt sich um eine Dialog-Anwendung (Klasse CDialog)
nicht um eine Dokument-Anwendung! (Kl. CDocument)
a99.cpp enth. FLEX-Interpreter: Funktion FLEXecute()
und die Abarbeitung aller Menu- und Button-Funktionen
Unterfenster haben eigene Quellmodule, s.u.
a99.h
Hauptelemente (jeweils CDialog-Fenster, werden aus a99.cpp bzw. alcarta geoeffnet)
Für acon werden diese nicht gebraucht, denn acon hat keine graphische Oberfläche.
A. Die zwei wichtigsten, unverzichtbaren
A.1. Window für den Index
winx.cpp
winx.h
A.2. Window für Kurz- u. ViewListen: d.h. Ergebnismengen- und ViewListenfenster
wkv.cpp
wkv.h
B. Sechs andere
B.1. Aresqa-Fenster (oft f. laengere Auswahlen oder Menues genutzt)
aresqa.cpp
aresqa.hn
B.2. FernglasFormular f. find-Funktion
wfind.cpp
wfind.h
B.3. Dialog f. Glob. Ersetzungen
glob.cpp
glob.h
B.4. FormularKlasse (CDialog, FLEX: form ...)
aform.cpp
aform.h
B.5. Subfield Dialog (CDialog, Teilfeld-Editor (subhelp=1 in .ini). Wohl selten genutzt!)
subfield.cpp
subfield.h
B.6 Besen (CDialog)
acleanup.cpp
acleanup.h
C. Unterelemente mit eigenen Fenstern sowie abgeleitete Klassen
Die Erweiterung der Basisklassen, z.B. CButton, ist jeweils wegen der
Größenänderung nötig, sowie wegen der Funktionstasten (F5, F7)
z.T. auch wegen anderer Zusatzfunktionen
C.1 Eigene Button-Klasse (von CButton abgeleitet)
abutton.cpp
abutton.h
C.2 Einzeiliges EingabeFeld (CDialog, FLEX: ask ...)
getl.cpp
getl.h
C.3 Einzeiliges EingabeFeld f. Passwort (CDialog, FLEX: ask @...)
getp.cpp
getp.h
C.4 Klasse f. mehrzeiliges Editfeld (von CEdit)
aedit.cpp
aedit.h
C.5 eigene RichEditKlasse (von CRichEditCtrl, Anzeigefeld)
Sonderfunktionen: Phrasen, Flips, rechte Maustaste
ariched.cpp
ariched.h
C.6 Eigene ComboBoxKlasse (von CComboBox abgeleitet)
für Eingabefelder mit Auswahl der vorherigen Eingaben, z.B. "Schnelle Suche"
acombo.cpp
acombo.h
C.7 eigene SelectBoxKlasse (CDialog, FLEX: select ...)
selbox.h
selbox.cpp
C.8 eigene ListBoxKlasse (von CListBox, f. Erg.Menge und ViewListe)
alistbox.cpp
alistbox.h
C.9 MessageBox mit Timer (CDialog, FLEX: Mes ...)
msg.cpp
msg.h
C.10 eigene ProgressCtrl-Klasse (von CProgressCtrl, Forschritts-Balken)
aprogr.h
aprogr.cpp
Sonstige wichtige Prozeduren (Auch für acon)
Nachschauen, ob Datenbank auf dem angeforderten Verz. existiert
lookford.cpp
Komplexen Suchbefehl parsen (in RP-Notation wandeln) Auch für acon
parser.cpp
parser.hpp
Komplexen Suchbefehl ausfuehren (nachdem vom parser erstellt)
nutzt index.cpp (in ac15)
rpnfind.cpp (in acon: avfind.cpp und avfind.hpp, leicht verändert)
rpnfind.hpp
RegEx-Klasse f. das Suchen im iV-Text (auch für acon)
regex.cpp
re_fail.cpp
regex.h (f. FLEX srx ...)
Das Programm acon hat noch einige weitere Quelldateien.
UB Braunschweig 2014-04-11, B.Eversberg