150 likes | 222 Views
Windows-Programmierung. Reihenfolge der Programmabarbeitung durch Reihenfolge der Prozeduren festgelegt. Kommandozeilen-Programme verhalten sich prozedurorientiert. Der Nutzer legt die Reihenfolge der Programmabarbeitung fest. Windows-Programme verhalten sich ereignisorientiert.
E N D
Windows-Programmierung Reihenfolge der Programmabarbeitung durch Reihenfolge der Prozeduren festgelegt Kommandozeilen-Programmeverhalten sich prozedurorientiert Der Nutzer legt die Reihenfolge der Programmabarbeitung fest. Windows-Programmeverhalten sich ereignisorientiert • Windows-Programme teilen sich • den Bildschirm • den Speicher • die Rechenzeit Sie bestehen aus Fenstern. Prof. Dr. W. Voigt
Messages (Nachrichten) • Konzeption der Nachrichten: • Zu jedem Ereignis wird eine Nachricht erzeugt • Das kann sein: Tastendruck, Mausbewegung, Menübefehl. • Die Nachrichten werden in Warteschlangen gestellt. • Aus den Warteschlangen werden die Nachrichten verteilt, weitergeleitet oder abgeholt (hängt vom Betriebssystem ab) • Schlußfolgerung: • Von Windows-Programmen sind • Fenster und • Nachrichten • zu verwalten. Prof. Dr. W. Voigt
Inhalt einer Nachricht Kennziffer (Handle) des Fensters, welches die Nachricht empfangen soll. typedef struct { HWND hwnd; UINT message; WPARAM wparam; LPARAM lparam; DWORD time; POINT pt; } meldung; Nummer der Nachricht Spezifizierung der Nachricht. Uhrzeit der Nachricht Mausposition zur Zeit der Erzeugung der Nachricht Prof. Dr. W. Voigt
Inhalt einer Nachricht Gesendet bei einer Mausbewegung • Einige Nachrichten: • WM_MOUSEMOVE • WM_LBUTTONDBLCLK • WM_PAINT • WM_DESTROY Gesendet bei Doppelklick mit der linken Maustaste Gesendet als Aufforderung zum Neuzeichnen des Fensters Gesendet zum Beenden des Programms Prof. Dr. W. Voigt
Benötigte Funktionen • Die „Hauptfunktion“ wird mit WinMain bezeichnet. • Sie: • füllt eine Fensterstruktur mit Attributen. • registriert das Fenster bei Windows (Anmeldung) • erschafft das Fenster und zeigt es • erzeugt eine Nachrichtenschleife mit Übersetzung und Verteilung der Nachrichten WNDCLASS wc; RegisterClass(&wc); Hauptfenster = CreateWindow(... TranslateMessage(&meldung); DispatchMessage(&meldung); • Diese Funktionen sind in einer Bibliothek enthalten. • Sie werden API-Funktionen genannt (Application Programming Interface) • Die Prototypen befinden sich in „windows.h“. Eine weitere Funktion „Fensterfunktion“ empfängt die Nachrichten von WinMain und wertet sie aus. Entsprechend dem Typ und Inhalt der Nachricht sorgt der Programmierer dafür, daß als Reaktion auf die Nachricht Aktionen erfolgen Prof. Dr. W. Voigt
Beispiel „Zeichne“ Die wichtigsten Bestandteile des Programms wurden in den vorigen Folien angegeben • Funktionalität: • Bei Programmstart wird ein leeres Fenster mit weißem Hintergrund erzeugt. • Mit der linken Maustaste kann im Fenster beliebig gemalt werden. • Doppelklick mit der linken Maustaste beseitigt das Gemalte, der Hintergrund wird wieder weiß. Nachrichten Funktionen Kompletter Quelltext Prof. Dr. W. Voigt
Übungsaufgabe 1 • Erweitern Sie das Programm „Zeichne“ um folgende Funktionalität: • Bei Klick mit der rechten Maustaste soll eine Dialogbox mit der Meldung • „Soeben hat es rechts geklickt!“ • erscheinen (In der Titelleiste soll stehen: „Meldung“). • Bestimmen Sie die Syntax der Dialogbox unter dem Stichwort „MessageBox“ aus der Hilfe. • Versuchen Sie intuitiv, den erforderlichen Namen der Nachricht herauszufinden. • Färben Sie den Hintergrund grau (gray). Programm starten Prof. Dr. W. Voigt
Ressourcen • In einem extra Bereich des Programms werden Materialien gespeichert, auf die das Programm bei Bedarf zurückgreifen kann (Ressourcen). Das sind • Menüs • Dialogboxen • Bitmaps • Ikonen • Tastenkombinationen für beschleunigten Zugriff • Zeichenketten • Versionsinformationen Diese Ressourcen werden bei der Programmierung in einer extra Datei verwaltet (Ressourcen-Datei .RC). Sie werden durch einen extra Compiler compiliert und erst beim Linken der EXE zugefügt. Aber: Die Einbindung von Ressourcen in klassischem Windows ist ziemlich ungemütlich, und wir wollen darauf verzichten. Prof. Dr. W. Voigt
Experten und Zauberer ... • ... erleichtern die Arbeit des Windows-Programmiers ungemein. • Beherrschen muß er jetzt: • C++-Programmierung • Die mit der Entwicklungsumgebung mitgelieferten Klassenbibliotheken. Auch ohne Zauberer hat der Windows-Programmierer nicht jedes Programm von Anfang an neu geschrieben, sondern vorhandene Programmgerüste benutzt. Trotzdem war das Programmieren mühselig. Nun geht man davon aus, daß der Rahmen für ein Windows-Programm im wesentlichen immer der gleiche ist: Eine MDI-Anwendung (MDI - Multiple Document Interface). Eine SDI-Anwendung (SDI - Single Document Interface). Eine Dialogbox. • Der Experte oder Zauberer • erzeugt das lauffähige Basisprogramm. • verwaltet neu hinzukommende Klassen. • kümmert sich um die Verbindung zwischen Ressourcen und Programmcode. Prof. Dr. W. Voigt
Vorgehensmodell: Programmieren in hoher Qualität Programmieren in C Keine Objektorientierung Objektorientiertes Programmieren Objektorientierte Modelle Windows-Programme in C Klassische Programmierung Klassenbibliothek, Etwa MFC Objektorientierte Windows- Programme mit MFC Objektorientierte Kommandozeilen- Programme mit MFC Prof. Dr. W. Voigt
Hauptstruktur der Microsoft Foundation Classes CObject CCmdTarget CWinApp CDocTemplate CWnd CDocument CFrameWnd CView CDialog CMeineAnwendung CMeinProgramm CMeinView CMeinDokument Dazu kommt eine Menge weiterer Ableitungen sowie Klassen, die nicht im Hierarchiebaum eingeordnet sind. Unterhalb eigene Ableitungen Prof. Dr. W. Voigt
Anwendung der MFCs Schlüsselkonzepte • Herzstück des Programms ist ein "Anwendungsobjekt". Es verwaltet eine Liste von Dokumenten und verteilt Befehle an andere Objekte im Programm. • Die Dateneinheit, mit der der Nutzer arbeitet, ist ein Dokument. Das Dokument erhält, speichert und lädt seine Daten selbst. • Der Nutzer kommuniziert mit einem Dokument über einen View, eine Ansicht. Das ist ein Fenster in der Client Area eines Rahmens. Es zeigt die Daten des Dokumentes, nimmt Eingaben von Maus und Tastatur an, übersetzt sie in Markierung oder Bearbeitung. • Objekte im Nutzerinterface wie Menüs und Schalter senden Befehle (Messages) an Dokumente, Views und andere Objekte. Diese Objekte führen die Befehle aus. Prof. Dr. W. Voigt
Beziehung zwischen Dokument und View Dokument Speichert Daten in einem internen zwekcmäßigen Format Dokument Speichert Daten in einem internen zwekcmäßigen Format View Bring die Daten in eine optisch sinnvolle Form und antwortet auf Nutzereingaben Prof. Dr. W. Voigt
Basisklasse CObject der MFC Benutzung:Programmierung ohne die Vorgaben durch den Anwendungsassistenten. Mittel:Definition eigener Klassen, die von CObject abgeleitet sind. Die Klasse kann folgende Fähigkeiten vermitteln: ·Fähigkeiten, Klassen dynamisch erst zur Laufzeit eines Programms zu erzeugen (wird z.B. benötigt bei Dateiarbeit). ·Fähigkeit zum Laden und Speichern von Daten ·Fähigkeiten zur Diagnostik für Objekte. Mitglieder KonstruktionDefault constructor.Copy constructor.operator newoperator deleteoperator = DiagnostikAssertValid(Überprüft die Integrität eines Objektes.) · Dump(Erzeugt einen Dump für ein Objekt.) SerializationIsSerializable(Prüft, ob ein Objekt gespeichert werden kann) Serialize(Lädt oder speichert ein Objekt aus einem/in ein Archiv.) AllgemeinesGetRuntimeClass(Gibt ein RunTimeClass-Struktur zurück, die mit der Objektklasse korrespondiert.) IsKindOf(Prüft die Beziehung eines Objektes zu einer gegebenen Klasse. ) Prof. Dr. W. Voigt
Experten und Zauberer 2 • Zauberer • werden von Visual C++ (Microsoft) benutzt: • Application Wizard - zaubert eine neue Anwendung • Class Wizard - verwaltet Klassen und verbindet Ressourcen mit Klassen. • Experten • werden von Borland C++ (Borland Corp.) benutzt: • Application Expert - erzeugt eine neue Anwendung • Class Expert - verwaltet Klassen und verbindet Ressourcen mit Klassen. Prof. Dr. W. Voigt