Grundsätze der Windows Programmierung
zustandsgesteuerter Ablauf
ereignisgesteuerte Ablauf
preemptives Multitasking
nonpreemptives Multitasking
Programminstanzen
Handles
GDI
Meldungen
Ressourcen
Dialoge
Ablauf von Programmen
Zustandsgesteuerter Ablauf: herkömmliche Programme Bei herkömmlichen Programmen werden die Funktionen sequentiell abgearbeitet und vom Programm gesteuert.
Start
Eingabe-Maske 1
Eingabe-Maske 2
Ergebnisse
ausgeben
Stop
Vorteil:
einfach zu programmieren
Nachteil:
starr und nicht flexibel
vorgegebener Ablauf
eignet sich schlecht für nonpreemptives Multitasking
Ereignisgesteuerter Ablauf: Windows-Programme
Bei Windows-Programmen werden die Funktionen vom Benutzer gesteuert, d.h. meldungsorientiert abgearbeitet.
Start
Eingabe-Maske 1
Ende?
Hole nächstes Ereignis
Stop
Interpretiere Ereignis
Eingabe-Maske 2
Ja
Ergebnisse ausgeben
Nein
Vorteil:
Ablauf durch Benutzer beeinflußbar
flexibel
gut für nonpreemptives Multitasking geeignet
beliebige Reihenfolge der Verarbeitungsschritte
Nachteil:
aufwendige Programmierung -- neigt zum "Chaos"
Multitasking
Preemptives Multitasking Bei dieser Art von Multitasking unterbricht das Betriebssystem den laufenden Prozeß "von außen" bevor er beendet ist, um auf andere Prozesse zu wechseln. Das Programm muß sich daher nicht selbst kümmern, wann und wie diese Unterbrechungen erfolgen.
Nonpreemptives Multitasking Windows 3.x verwendet ausschließlich diese Art von Multitasking:
Ein Prozeß wird nicht von außen unterbrochen, bevor er nicht beendet ist. Das Programm muß sich also selbst darum kümmern, daß auch andere Programme ausgeführt werden. Diese periodische Rückgabe der Steuerung erfolgt durch den Aufruf einer Betriebssystem-Funktion. Nonpreemptives Multitasking wird auch "meldungsgetriebenes" Multitasking genannt.
Grundbegriffe
Programminstanzen Da Windows-Programme grundsätzlich mehrfach parallel ausführbar sind wird eine Ausführung des Programms Instanz genannt.
Der Programmcode und die Ressourcen werden von den Instanzen gemeinsam genutzt, und beim ersten Aufruf in den Speicher geladen. Der Datenbereich steht natürlich jeder Instanz separat zur Verfügung.
Handles Der Zugriff auf "Windows-Objekte" (Fenster, Instanzen, Menüs, ...) erfolgt durch die Verwendung von Handles, die die Identifikation ermöglichen. Diese "Bezüge" sind durch vorzeichenlose 16-Bit Zahlen realisiert.
GDI - Graphics Device Interface Das GDI stellt eine Bibliothek von Routinen dar und wird sowohl von Windows selbst als auch von Applikation zur geräteunabhängigen Grafik- und Textausgabe verwendet.
Dabei stehen vier Einheiten zu Verfügung:
Bildschirme
Hardcopy-Geräte
Bitmaps
Meta-Dateien
Eine Device-Context (DC) stellt die Verbindung zu einer bestimmten Einheit (Zeichenoberfläche) her und stellt einen "Werkzeugkasten" mit logischen Werkzeugen wie Pinsel, Stifte, Schriftarten, etc. zur Verfügung.
DC anfordern |
BeginPaint, Get DC |
DC zurückgeben |
EndPaint, ReleaseDC |
vorh. Objekt ermitteln |
GetStockObject |
neues Objekt erstellen |
CreatePen, CreateFont, ... |
Objekt in DC aufnehmen |
SelectObject |
Objekt aus DC löschen |
DeleteObject |
Meldungen
Meldungen informieren über alle Ereignisse (Mausaktionen, Tastenanschläge, Ablauf eines Zeitintervalls) und bestehen aus einer vorzeichenlosen 16-Bit Zahl. Für Zusatzinformationen gibt es die Parameter WPARAM (16 Bit) und LPARAM (32 Bit).
Windows verwendet 2 Übergabe-Mechanismen:
"PULL-Model": Übergabe bei GetMessage, Applikation ist aktiv, MSG-Struktur
"PUSH-Model": Aufruf einer Fensterfunktion durch Windows, Applikation ist passiv, Meldung in Form einzelner Parameter
Erzeugen von Meldungen:
PostMessage: Stellt Meldung ans Ende der Warteschlange
SendMessage: Ruft entsprechende Fensterfunkt. direkt auf
Die nächste Abbildung zeigt den Meldungsfluß zwischen Windows und den einzelnen Applikationen.
Applikation B
Applikation A
Meldungs-schleife
Meldungs-schleife
Fenster-funktion B
Fenster-funktion B2
DispatchMessage
Maustreiber
Tastaturtreiber
Timer-Interrupts
Fenster-funktion A2
Fenster-funktion A
Applikations-Nachrichten-Warteschlangen
System-Nachrichten-Warteschlangen
Ressourcen
Ressourcen sind read-only Dateien, die hauptsächlich für die Gestaltung der Benutzeroberfläche verwendet werden. Diese Daten werden unabhängig vom Programm erstellt und verwaltet und später im Objektcode des Programms gelinkt. Eine eventuelle Änderung der Ressourcen (zB Übersetzung der Texte in einer andere Sprache) kann daher ohne Änderung des Programmcodes geschehen.
Ressource Typen:
Menüs
Dialoge
Accelerators
Cursor
Icons
Bitmaps
Stings
Schriften
Dialoge
Dialoge sind standardisierte Methoden zum Einlesen von Informationen vom Benutzer und werden als Ressourcen abgespeichert. Ein Dialog ist eine spezielle Fensterart mit untergeordneten Fenstern (Kontrollelemente).
Die wichtigsten Kontrollelemente sind:
Textfelder zur Texteingabe
Buttons zum Auslösen vers. Aktionen
Listboxen, Comboboxen zur Auswahl von Einträgen
Text und Symbole zur Anzeige von Informationen
Man unterscheidet zwei verschiedene Dialogarten:
Modaler Dialog
Ein modaler Dialog muß vor dem Weiterarbeiten mit der Applikation geschlossen werden. Das Elternfenster wird vollkommen deaktiviert, die Steuerung wird an die Funktion Dialogbox übergeben, welche eine eigene Meldungsschleife enthält. Die Rückkehr zum Elternfenster erfolgt mit dem Aufruf der Funktion EndDialog.
system-modal: gesamtes Windows ist lahmgelegt
applikations-modal: nur die eigene Applikation wird "deaktiviert", man kann also zu anderen Applikationen wechseln
Nicht-modaler Dialog
Beim nicht-modalen Dialog kann der Benutzer zwischen Dialog und dem Rest der Applikation wechseln. Ein nicht-modaler Dialog wird mit dem Aufruf der Funktion CreateDialog erstellt, die Kontrolle bleibt aber beim Elternfenster. Da es keine Dialog-Meldungsschleife gibt, muß die Meldungsschleife in WinMain modifiziert werden.
Haupt | Fügen Sie Referat | Kontakt | Impressum | Nutzungsbedingungen