Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

C++Prof. Dr. W. Voigt1 Windows-Programmierung Kommandozeilen-Programme verhalten sich prozedurorientiert Windows-Programme verhalten sich ereignisorientiert.

Ähnliche Präsentationen


Präsentation zum Thema: "C++Prof. Dr. W. Voigt1 Windows-Programmierung Kommandozeilen-Programme verhalten sich prozedurorientiert Windows-Programme verhalten sich ereignisorientiert."—  Präsentation transkript:

1

2 C++Prof. Dr. W. Voigt1 Windows-Programmierung Kommandozeilen-Programme verhalten sich prozedurorientiert Windows-Programme verhalten sich ereignisorientiert Reihenfolge der Programmabarbeitung durch Reihenfolge der Prozeduren festgelegt Der Nutzer legt die Reihenfolge der Programmabarbeitung fest. Windows-Programme teilen sich den Bildschirm den Speicher die Rechenzeit Windows-Programme teilen sich den Bildschirm den Speicher die Rechenzeit Sie bestehen aus Fenstern.

3 C++Prof. Dr. W. Voigt2 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) 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. Schlußfolgerung: Von Windows-Programmen sind Fenster und Nachrichten zu verwalten.

4 C++Prof. Dr. W. Voigt3 Inhalt einer Nachricht typedef struct { HWND hwnd; UINT message; WPARAM wparam; LPARAM lparam; DWORD time; POINT pt; } meldung; typedef struct { HWND hwnd; UINT message; WPARAM wparam; LPARAM lparam; DWORD time; POINT pt; } meldung; Kennziffer (Handle) des Fensters, welches die Nachricht empfangen soll. Nummer der Nachricht Spezifizierung der Nachricht. Uhrzeit der Nachricht Mausposition zur Zeit der Erzeugung der Nachricht

5 C++Prof. Dr. W. Voigt4 Inhalt einer Nachricht Einige Nachrichten: WM_MOUSEMOVE WM_LBUTTONDBLCLK WM_PAINT WM_DESTROY Einige Nachrichten: WM_MOUSEMOVE WM_LBUTTONDBLCLK WM_PAINT WM_DESTROY Gesendet bei einer Mausbewegung Gesendet bei Doppelklick mit der linken Maustaste Gesendet als Aufforderung zum Neuzeichnen des Fensters Gesendet zum Beenden des Programms

6 C++Prof. Dr. W. Voigt5 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 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); 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 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 Diese Funktionen sind in einer Bibliothek enthalten. Sie werden API-Funktionen genannt (Application Programming Interface) Die Prototypen befinden sich in windows.h. Diese Funktionen sind in einer Bibliothek enthalten. Sie werden API-Funktionen genannt (Application Programming Interface) Die Prototypen befinden sich in windows.h.

7 C++Prof. Dr. W. Voigt6 Beispiel Zeichne 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ß. 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ß. Kompletter Quelltext Die wichtigsten Bestandteile des Programms wurden in den vorigen Folien angegeben Funktionen Nachrichten

8 C++Prof. Dr. W. Voigt7 Übungsaufgabe Programm starten 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). 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). 1

9 C++Prof. Dr. W. Voigt8 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 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. 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. Aber: Die Einbindung von Ressourcen in klassischem Windows ist ziemlich ungemütlich, und wir wollen darauf verzichten.

10 C++Prof. Dr. W. Voigt9 Experten und Zauberer erleichtern die Arbeit des Windows-Programmiers ungemein. Beherrschen muß er jetzt: C++-Programmierung Die mit der Entwicklungsumgebung mitgelieferten Klassenbibliotheken.... erleichtern die Arbeit des Windows-Programmiers ungemein. Beherrschen muß er jetzt: C++-Programmierung Die mit der Entwicklungsumgebung mitgelieferten Klassenbibliotheken. 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. 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. 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. 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. Der Experte oder Zauberer erzeugt das lauffähige Basisprogramm. verwaltet neu hinzukommende Klassen. kümmert sich um die Verbindung zwischen Ressourcen und Programmcode. Der Experte oder Zauberer erzeugt das lauffähige Basisprogramm. verwaltet neu hinzukommende Klassen. kümmert sich um die Verbindung zwischen Ressourcen und Programmcode.

11 C++Prof. Dr. W. Voigt10 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 Kommandozeilen- Programme mit MFC Objektorientierte Windows- Programme mit MFC

12 C++Prof. Dr. W. Voigt11 Hauptstruktur der Microsoft Foundation Classes CObject CCmdTarget CWinAppCDocTemplateCWndCDocument CFrameWndCViewCDialog CMeineAnwendungCMeinProgrammCMeinViewCMeinDokument Unterhalb eigene Ableitungen Dazu kommt eine Menge weiterer Ableitungen sowie Klassen, die nicht im Hierarchiebaum eingeordnet sind.

13 C++Prof. Dr. W. Voigt12 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.

14 C++Prof. Dr. W. Voigt13 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

15 C++Prof. Dr. W. Voigt14 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. 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 Konstruktion Default constructor. Copy constructor. operator new operator delete operator = Diagnostik AssertValid (Überprüft die Integrität eines Objektes.) · Dump (Erzeugt einen Dump für ein Objekt.) Serialization IsSerializable (Prüft, ob ein Objekt gespeichert werden kann) Serialize (Lädt oder speichert ein Objekt aus einem/in ein Archiv.) Allgemeines GetRuntimeClass (Gibt ein RunTimeClass-Struktur zurück, die mit der Objektklasse korrespondiert.) IsKindOf (Prüft die Beziehung eines Objektes zu einer gegebenen Klasse. ) Mitglieder Konstruktion Default constructor. Copy constructor. operator new operator delete operator = Diagnostik AssertValid (Überprüft die Integrität eines Objektes.) · Dump (Erzeugt einen Dump für ein Objekt.) Serialization IsSerializable (Prüft, ob ein Objekt gespeichert werden kann) Serialize (Lädt oder speichert ein Objekt aus einem/in ein Archiv.) Allgemeines GetRuntimeClass (Gibt ein RunTimeClass-Struktur zurück, die mit der Objektklasse korrespondiert.) IsKindOf (Prüft die Beziehung eines Objektes zu einer gegebenen Klasse. )

16 C++Prof. Dr. W. Voigt15 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. 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. Experten werden von Borland C++ (Borland Corp.) benutzt: Application Expert - erzeugt eine neue Anwendung Class Expert - verwaltet Klassen und verbindet Ressourcen mit Klassen.


Herunterladen ppt "C++Prof. Dr. W. Voigt1 Windows-Programmierung Kommandozeilen-Programme verhalten sich prozedurorientiert Windows-Programme verhalten sich ereignisorientiert."

Ähnliche Präsentationen


Google-Anzeigen