25
Windows-Programmier ung Prof. Dr. W. Voigt CES-Löbau 1 Windows- Programmierung mit dem C++ Builder 3 von Borland

Windows-ProgrammierungProf. Dr. W. Voigt CES-Löbau1 Windows-Programmierung mit dem C++ Builder 3 von Borland

Embed Size (px)

Citation preview

Page 1: Windows-ProgrammierungProf. Dr. W. Voigt CES-Löbau1 Windows-Programmierung mit dem C++ Builder 3 von Borland

Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau 1

Windows-Programmierungmit dem

C++ Builder 3von Borland

Page 2: Windows-ProgrammierungProf. Dr. W. Voigt CES-Löbau1 Windows-Programmierung mit dem C++ Builder 3 von Borland

Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau 2

Windows-ProgrammierungKommandozeilen-Programme

verhalten sich prozedurorientiert

Windows-Programmeverhalten sich ereignisorientiert

Reihenfolge der Programmabarbeitung durch Reihenfolge der Prozeduren festgelegt

Reihenfolge der Programmabarbeitung durch Reihenfolge der Prozeduren festgelegt

Der Nutzer legt die Reihenfolge der Programmabarbeitung fest.

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.Sie bestehen aus Fenstern.

Page 3: Windows-ProgrammierungProf. Dr. W. Voigt CES-Löbau1 Windows-Programmierung mit dem C++ Builder 3 von Borland

Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau 3

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)

Schlussfolgerung:

Von Windows-Programmen sind

•Fenster und

•Nachrichten

zu verwalten.

Schlussfolgerung:

Von Windows-Programmen sind

•Fenster und

•Nachrichten

zu verwalten.

Page 4: Windows-ProgrammierungProf. Dr. W. Voigt CES-Löbau1 Windows-Programmierung mit dem C++ Builder 3 von Borland

Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau 4

Inhalt einer Nachrichttypedef 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.

Kennziffer (Handle) des Fensters, welches die Nachricht empfangen soll.

Nummer der NachrichtNummer der Nachricht

Spezifizierung der Nachricht.

Spezifizierung der Nachricht.

Uhrzeit der NachrichtUhrzeit der Nachricht

Mausposition zur Zeit der Erzeugung der Nachricht

Mausposition zur Zeit der Erzeugung der Nachricht

Page 5: Windows-ProgrammierungProf. Dr. W. Voigt CES-Löbau1 Windows-Programmierung mit dem C++ Builder 3 von Borland

Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau 5

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 einer Mausbewegung

Gesendet bei Doppelklick mit der linken Maustaste

Gesendet bei Doppelklick mit der linken Maustaste

Gesendet als Aufforderung zum Neuzeichnen des Fensters

Gesendet als Aufforderung zum Neuzeichnen des Fensters

Gesendet zum Beenden des Programms

Gesendet zum Beenden des Programms

Page 6: Windows-ProgrammierungProf. Dr. W. Voigt CES-Löbau1 Windows-Programmierung mit dem C++ Builder 3 von Borland

Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau 6

Benötigte FunktionenDie „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;WNDCLASS wc;

RegisterClass(&wc);RegisterClass(&wc);

Hauptfenster = CreateWindow(...Hauptfenster = CreateWindow(...

TranslateMessage(&meldung); DispatchMessage(&meldung);

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, dass 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, dass 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“.

Page 7: Windows-ProgrammierungProf. Dr. W. Voigt CES-Löbau1 Windows-Programmierung mit dem C++ Builder 3 von Borland

Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau 7

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

Die wichtigsten Bestandteile des Programms wurden in den vorigen Folien angegeben

Funktionen

Nachrichten

Programm starten

Page 8: Windows-ProgrammierungProf. Dr. W. Voigt CES-Löbau1 Windows-Programmierung mit dem C++ Builder 3 von Borland

Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau 8

Aufgabe 1

Programm starten

Das Programm „Zeichne“ soll um folgende Funktionalität erweitert werden:

Bei Klick mit der rechten Maustaste soll eine Dialogbox mit der Meldung

„Klick mit der rechten Maustaste“

erscheinen (In der Titelleiste soll stehen: „Meldung“).

Syntax (für unsere Zwecke):MessageBox(NULL, „<Text der Nachricht>“, „<Titel des Dialogs>“, MB_OK);

MB_OK ist eine Konstante, die zu MessageBox gehört.

Als Nachricht sollte WM_RBUTTONUP benutzt werden.Warum nicht WM_RBUTTONDOWN?

Das Programm „Zeichne“ soll um folgende Funktionalität erweitert werden:

Bei Klick mit der rechten Maustaste soll eine Dialogbox mit der Meldung

„Klick mit der rechten Maustaste“

erscheinen (In der Titelleiste soll stehen: „Meldung“).

Syntax (für unsere Zwecke):MessageBox(NULL, „<Text der Nachricht>“, „<Titel des Dialogs>“, MB_OK);

MB_OK ist eine Konstante, die zu MessageBox gehört.

Als Nachricht sollte WM_RBUTTONUP benutzt werden.Warum nicht WM_RBUTTONDOWN?

Page 9: Windows-ProgrammierungProf. Dr. W. Voigt CES-Löbau1 Windows-Programmierung mit dem C++ Builder 3 von Borland

Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau 9

Aufgabe 2

Programm starten

Der Hintergrund des Programms soll Grau sein (GRAY).

An Stelle des Kreuzkursors soll ein Pfeilkursor benutzt werden (ARROW).

Der Text in der Titelzeile soll lauten:

Zeichenprogramm für Anfänger

Der Hintergrund des Programms soll Grau sein (GRAY).

An Stelle des Kreuzkursors soll ein Pfeilkursor benutzt werden (ARROW).

Der Text in der Titelzeile soll lauten:

Zeichenprogramm für Anfänger

Page 10: Windows-ProgrammierungProf. Dr. W. Voigt CES-Löbau1 Windows-Programmierung mit dem C++ Builder 3 von Borland

Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau 10

Nothing is perfect ...

Funktionalität mal aus anderer Perspektive:

• Wir malen ein bisschen in unserem Programm.

• Dann wechseln wir mit Alt + Tab in ein anderes Programm (etwa den Explorer).

• Danach kehren wir mit Alt+Tab in das Zeichenprogramm zurück.

• Die Zeichnung ist verschwunden (zumindest der Teil, der verdeckt war).

• Das Programm ist also noch nicht gerade für den Verkauf geeignet.

• Nun zeichnen wir wieder und öffnen dann die Messagebox.

• Wenn sie geschlossen ist, ist die Zeichnung dahinter noch vorhanden.

Funktionalität mal aus anderer Perspektive:

• Wir malen ein bisschen in unserem Programm.

• Dann wechseln wir mit Alt + Tab in ein anderes Programm (etwa den Explorer).

• Danach kehren wir mit Alt+Tab in das Zeichenprogramm zurück.

• Die Zeichnung ist verschwunden (zumindest der Teil, der verdeckt war).

• Das Programm ist also noch nicht gerade für den Verkauf geeignet.

• Nun zeichnen wir wieder und öffnen dann die Messagebox.

• Wenn sie geschlossen ist, ist die Zeichnung dahinter noch vorhanden.

Um das Neuzeichnen bei Programmwechsel müssen wir uns also selbst kümmern, während das Neuzeichnen bei Messageboxen durch das Betriebssystem erfolgt.Das Neuzeichnen durch den Programmierer ist aber ein relativ komplexer Mechanismus!

Um das Neuzeichnen bei Programmwechsel müssen wir uns also selbst kümmern, während das Neuzeichnen bei Messageboxen durch das Betriebssystem erfolgt.Das Neuzeichnen durch den Programmierer ist aber ein relativ komplexer Mechanismus!

Page 11: Windows-ProgrammierungProf. Dr. W. Voigt CES-Löbau1 Windows-Programmierung mit dem C++ Builder 3 von Borland

Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau 11

RessourcenIn 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.

Page 12: Windows-ProgrammierungProf. Dr. W. Voigt CES-Löbau1 Windows-Programmierung mit dem C++ Builder 3 von Borland

Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau 12

Experten und Zauberer ...... erleichtern die Arbeit des Windows-Programmierers ungemein.

Beherrschen muss er jetzt:

•C++-Programmierung

•Die mit der Entwicklungsumgebung mitgelieferten Klassenbibliotheken.

... erleichtern die Arbeit des Windows-Programmierers ungemein.

Beherrschen muss 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.

Page 13: Windows-ProgrammierungProf. Dr. W. Voigt CES-Löbau1 Windows-Programmierung mit dem C++ Builder 3 von Borland

Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau 13

Experten und Zauberer 2

Der Weg zu einer neuen Anwendung im Borland C++Builder:

• Menü DateiNeuProjekteSDI-Anwendung

• Wählen Sie das Verzeichnis und den Namen für das neue Projekt. Der Name sei „Test“.

• Das Projekt kann sofort erstellt werden.

• Man erhält ein Programm, welches bereits Datei-Mechanismen kennt, aber keine weitere Funktionalität besitzt.

Der Weg zu einer neuen Anwendung im Borland C++Builder:

• Menü DateiNeuProjekteSDI-Anwendung

• Wählen Sie das Verzeichnis und den Namen für das neue Projekt. Der Name sei „Test“.

• Das Projekt kann sofort erstellt werden.

• Man erhält ein Programm, welches bereits Datei-Mechanismen kennt, aber keine weitere Funktionalität besitzt.

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.

Page 14: Windows-ProgrammierungProf. Dr. W. Voigt CES-Löbau1 Windows-Programmierung mit dem C++ Builder 3 von Borland

Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau 14

Der Experte ist am Wirken.Aufgaben

Führen Sie die gleichen Prozesse noch einmal durch, aber mit folgenden Abwandlungen:

•Fenstermodell MDI anstelle SDI

•Fenstermodell „Dialogbox“

Führen Sie die gleichen Prozesse noch einmal durch, aber mit folgenden Abwandlungen:

•Fenstermodell MDI anstelle SDI

•Fenstermodell „Dialogbox“

Page 15: Windows-ProgrammierungProf. Dr. W. Voigt CES-Löbau1 Windows-Programmierung mit dem C++ Builder 3 von Borland

Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau 15

Wir modifizieren ...Vorarbeit:

Öffnen Sie die Dialogbox „About“ mittels Klick auf den kleinen Dialog im Dateibaum.

Schalten Sie im Objektinspektor auf „Eigenschaften“.

Vorarbeit:

Öffnen Sie die Dialogbox „About“ mittels Klick auf den kleinen Dialog im Dateibaum.

Schalten Sie im Objektinspektor auf „Eigenschaften“.

Wir ändern die Dialogbox:

• Selektieren Sie jeweils die Texte und ändern Sie im Objektinspektor die Captions

• Produktname: „Mein Computerprogramm“

• Version: „Version 1.0.27“

• Copyright: „Copyright Firma xyz“

• Kommentare: „Dieses Programm ist durch zahlreiche internationale Verträge geschützt.“

• Titelzeile: „Informationen zum Programm“

Wir ändern die Dialogbox:

• Selektieren Sie jeweils die Texte und ändern Sie im Objektinspektor die Captions

• Produktname: „Mein Computerprogramm“

• Version: „Version 1.0.27“

• Copyright: „Copyright Firma xyz“

• Kommentare: „Dieses Programm ist durch zahlreiche internationale Verträge geschützt.“

• Titelzeile: „Informationen zum Programm“

Erstellen Sie neu und prüfen Sie das Ergebnis!Erstellen Sie neu und prüfen Sie das Ergebnis!

Page 16: Windows-ProgrammierungProf. Dr. W. Voigt CES-Löbau1 Windows-Programmierung mit dem C++ Builder 3 von Borland

Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau 16

Wir erweitern das Menü ...Vorarbeit: Menü suchen

Klicken Sie im Dateibaum auf die AppForm.

Man erhält den „Rahmen“ des Programms.Im gepunkteten Bereich befinden sich drei Symbole, die das Menü symbolisieren, das Hauptmenü und die beiden Menübefehle.

Vorarbeit: Menü suchen

Klicken Sie im Dateibaum auf die AppForm.

Man erhält den „Rahmen“ des Programms.Im gepunkteten Bereich befinden sich drei Symbole, die das Menü symbolisieren, das Hauptmenü und die beiden Menübefehle.

Wir erweitern das Menü:

• Selektieren Sie das Symbol für das Hauptmenü

• Wählen Sie „Eigenschaften“ im Objektinspektor.

• Klicken Sie unter Items auf die rechte Spalte mit „Menü“

• Klick auf die drei Punkte rechts öffnet das Editierfenster.

• Selektieren Sie ganz unten den freien Platz und schreiben Sie im Objektmanager unter Caption „Eigener &Dialog“.

• Ziehen Sie den neuen Eintrag nach oben unter „Speichern“

Wir erweitern das Menü:

• Selektieren Sie das Symbol für das Hauptmenü

• Wählen Sie „Eigenschaften“ im Objektinspektor.

• Klicken Sie unter Items auf die rechte Spalte mit „Menü“

• Klick auf die drei Punkte rechts öffnet das Editierfenster.

• Selektieren Sie ganz unten den freien Platz und schreiben Sie im Objektmanager unter Caption „Eigener &Dialog“.

• Ziehen Sie den neuen Eintrag nach oben unter „Speichern“

Erstellen Sie neu und prüfen Sie das Ergebnis!Erstellen Sie neu und prüfen Sie das Ergebnis!

Der Befehl lässt sich anwählen, aber es passiert – nichts!

„ Ac ti on “ is t g ef or d er t!

Page 17: Windows-ProgrammierungProf. Dr. W. Voigt CES-Löbau1 Windows-Programmierung mit dem C++ Builder 3 von Borland

Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau 17

Der Befehl zeigt Wirkung!Unser Ziel:

Bei Auswahl des Menübefehls soll eine Messagebox erscheinen mit der Mitteilung:

„Menübefehl wurde erfolgreich ausgeführt!“

Unser Ziel:

Bei Auswahl des Menübefehls soll eine Messagebox erscheinen mit der Mitteilung:

„Menübefehl wurde erfolgreich ausgeführt!“

• Wie bereits einmal durchgeführt, öffnen Sie das Menü mit selektiertem „Eigener &Dialog“.

• Wählen Sie im Objektinspektor „Ereignisse“. Dann steht ganz oben „Eigener Dialog1: TMenuItem“

• Schreiben Sie rechts von OnClick „MessageZeigen“.

• Es wird eine neue Funktion erzeugt, der Rahmen ist komplett vorhanden.

• Wie eine MessageBox aufgerufen wird, ist bereits bekannt. Tragen Sie den Aufruf in den Funktionskörper ein!

• Wie bereits einmal durchgeführt, öffnen Sie das Menü mit selektiertem „Eigener &Dialog“.

• Wählen Sie im Objektinspektor „Ereignisse“. Dann steht ganz oben „Eigener Dialog1: TMenuItem“

• Schreiben Sie rechts von OnClick „MessageZeigen“.

• Es wird eine neue Funktion erzeugt, der Rahmen ist komplett vorhanden.

• Wie eine MessageBox aufgerufen wird, ist bereits bekannt. Tragen Sie den Aufruf in den Funktionskörper ein!

Erstellen Sie neu und prüfen Sie das Ergebnis!Erstellen Sie neu und prüfen Sie das Ergebnis!

Page 18: Windows-ProgrammierungProf. Dr. W. Voigt CES-Löbau1 Windows-Programmierung mit dem C++ Builder 3 von Borland

Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau 18

Was ist passiert?Ein weitere Experte war am Wirken ...

•Der Eintrag in das Feld OnClick des Objektmanagers hat eine Reihe von Wirkungen gezeigt.

•Der Programmierer wird nur noch mit dem Ende der Kette konfrontiert:Das ist eine Funktion, die mit dem Auslösen des Menübefehls aufgerufen wird.

•Alles übrige bleibt verborgen. Es wird durch den Klassenexperten an den erforderlichen Stellen eingetragen.

Ein weitere Experte war am Wirken ...

•Der Eintrag in das Feld OnClick des Objektmanagers hat eine Reihe von Wirkungen gezeigt.

•Der Programmierer wird nur noch mit dem Ende der Kette konfrontiert:Das ist eine Funktion, die mit dem Auslösen des Menübefehls aufgerufen wird.

•Alles übrige bleibt verborgen. Es wird durch den Klassenexperten an den erforderlichen Stellen eingetragen.

Möglich wurde dieses Vorgehen durch das Prinzip der objektorientierten Programmierung.

Klassenbibliotheken enthalten allen Quellcode, der von Anwendungsexperten und Klassenexperten verarbeitet werden kann.

Der Programmierer programmiert nur das, was er tatsächlich einstellen oder verändern kann.

Möglich wurde dieses Vorgehen durch das Prinzip der objektorientierten Programmierung.

Klassenbibliotheken enthalten allen Quellcode, der von Anwendungsexperten und Klassenexperten verarbeitet werden kann.

Der Programmierer programmiert nur das, was er tatsächlich einstellen oder verändern kann.

Daraus folgt aber nicht, dass der Programmierer jetzt weniger Kenntnisse benötigt.Das Gegenteil ist der Fall. Er muss die klassische Programmierung beherrschen, dazu die Methoden der Objektorientierung, und schließlich muss er die Klasssenbibliotheken der Entwicklungsumgebung kennen.

Daraus folgt aber nicht, dass der Programmierer jetzt weniger Kenntnisse benötigt.Das Gegenteil ist der Fall. Er muss die klassische Programmierung beherrschen, dazu die Methoden der Objektorientierung, und schließlich muss er die Klasssenbibliotheken der Entwicklungsumgebung kennen.

Page 19: Windows-ProgrammierungProf. Dr. W. Voigt CES-Löbau1 Windows-Programmierung mit dem C++ Builder 3 von Borland

Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau 19

Programm „Quadrat“

Ziel: Das Programm „Quadrat“.

Es berechnet Quadrate und dritte Potenzen einer Zahl

So soll das Ergebnis aussehen:

•Sie benötigen eine neue Anwendung des AppExpert, aber diesmal in der Form einer Dialogbox.

•Mit den Voreinstellungen kann etwas experimentiert werden.

So soll das Ergebnis aussehen:

•Sie benötigen eine neue Anwendung des AppExpert, aber diesmal in der Form einer Dialogbox.

•Mit den Voreinstellungen kann etwas experimentiert werden.

Page 20: Windows-ProgrammierungProf. Dr. W. Voigt CES-Löbau1 Windows-Programmierung mit dem C++ Builder 3 von Borland

Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau 20

Dialogbox erstellen ...Der Anwendungsexperte erzeugt eine Dialogbox (nötige und unnötige Vorarbeiten):

•Möglicherweise knirscht hier etwas im Builder.

•Ein reines Dialogprojekt erhält man, wenn der Projektbuilder neu geöffnet wird. Man erhält es (möglicherweise) nicht über das Dateimenü.

•Das neue Projekt wird in einem Verzeichnis „Quadrat“ gespeichert. Namensänderungen führen zu Fehlern (Programmierfehler im Builder!).

•Dann wird der alte Projektbaum geöffnet und das neue Projekt eingehängt.

•Erstellen und Starten zeigen uns eine leere Dialogbox. Ihre Arbeitsfläche kann sofort verkleinert werden.

Der Anwendungsexperte erzeugt eine Dialogbox (nötige und unnötige Vorarbeiten):

•Möglicherweise knirscht hier etwas im Builder.

•Ein reines Dialogprojekt erhält man, wenn der Projektbuilder neu geöffnet wird. Man erhält es (möglicherweise) nicht über das Dateimenü.

•Das neue Projekt wird in einem Verzeichnis „Quadrat“ gespeichert. Namensänderungen führen zu Fehlern (Programmierfehler im Builder!).

•Dann wird der alte Projektbaum geöffnet und das neue Projekt eingehängt.

•Erstellen und Starten zeigen uns eine leere Dialogbox. Ihre Arbeitsfläche kann sofort verkleinert werden.

Page 21: Windows-ProgrammierungProf. Dr. W. Voigt CES-Löbau1 Windows-Programmierung mit dem C++ Builder 3 von Borland

Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau 21

Wir füllen die Dialogbox•Zunächst brauchen wir zwei Schalter: Einen zum Berechnen von Quadrat und dritter Potenz, einen zum Schließen.

•Klicken Sie den Schalter in der Standardleiste der Ressourcen an. Klick danach auf die Form bildet sie dort ab.

•Für die Vergabe von Namen usw. wird ständig der Objektmanager benutzt.

•Vergeben Sie Caption „&Berechnen“, Name „BBerechnen“Caption „Sch&ließen“, Name „BSchliess“

•Titel des Dialogs „Berechnung von Quadrat und dritter Potenz“

•Zunächst brauchen wir zwei Schalter: Einen zum Berechnen von Quadrat und dritter Potenz, einen zum Schließen.

•Klicken Sie den Schalter in der Standardleiste der Ressourcen an. Klick danach auf die Form bildet sie dort ab.

•Für die Vergabe von Namen usw. wird ständig der Objektmanager benutzt.

•Vergeben Sie Caption „&Berechnen“, Name „BBerechnen“Caption „Sch&ließen“, Name „BSchliess“

•Titel des Dialogs „Berechnung von Quadrat und dritter Potenz“

Erstellen Sie neu und prüfen Sie das Ergebnis!Erstellen Sie neu und prüfen Sie das Ergebnis!

Page 22: Windows-ProgrammierungProf. Dr. W. Voigt CES-Löbau1 Windows-Programmierung mit dem C++ Builder 3 von Borland

Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau 22

Die Schalter beschäftigen uns weiter ...

Berechnen-Schalter

•Default auf true

•Hint „Neuberechnung der Werte“

•ShowHint auf true

•Ereignis OnClick „Berechnen“

Berechnen-Schalter

•Default auf true

•Hint „Neuberechnung der Werte“

•ShowHint auf true

•Ereignis OnClick „Berechnen“

Erstellen Sie neu und prüfen Sie das Ergebnis!Das Programm lässt sich jetzt vernünftig schließen.

Erstellen Sie neu und prüfen Sie das Ergebnis!Das Programm lässt sich jetzt vernünftig schließen.

Schließen-Schalter

•Default auf false

•Hint „Das Programm wird beendet“

•ShowHint auf true

•Ereignis OnClick „Beenden“

•Die erzeugte Funktion ruft Close();

•Damit wird das Programm beendet.

Schließen-Schalter

•Default auf false

•Hint „Das Programm wird beendet“

•ShowHint auf true

•Ereignis OnClick „Beenden“

•Die erzeugte Funktion ruft Close();

•Damit wird das Programm beendet.

Page 23: Windows-ProgrammierungProf. Dr. W. Voigt CES-Löbau1 Windows-Programmierung mit dem C++ Builder 3 von Borland

Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau 23

Schreiben von Zahlen

Eingabe der Zahl

•Die Zahl wird in einem sogenannten Editfeld eingeben.

•Wir holen es aus der Standardleiste und plazieren es geeignet.

•Über das Editfeld setzen wir ein Label mit der Caption „Zahl eingeben:“

•Hint zum Editfeld: „Zahl eingeben, die potenziert werden soll

•ShowHint auf true

•Text werde auf 1 gesetzt

Eingabe der Zahl

•Die Zahl wird in einem sogenannten Editfeld eingeben.

•Wir holen es aus der Standardleiste und plazieren es geeignet.

•Über das Editfeld setzen wir ein Label mit der Caption „Zahl eingeben:“

•Hint zum Editfeld: „Zahl eingeben, die potenziert werden soll

•ShowHint auf true

•Text werde auf 1 gesetzt

Erstellen Sie neu und prüfen Sie das Ergebnis!Erstellen Sie neu und prüfen Sie das Ergebnis!

Ausgabe der Zahlen

•Zwei Labels und zwei Editfelder.

•Bei beiden Editfeldern wird ReadOnly auf true gesetzt, damit ein Editieren nicht möglich ist.

Ausgabe der Zahlen

•Zwei Labels und zwei Editfelder.

•Bei beiden Editfeldern wird ReadOnly auf true gesetzt, damit ein Editieren nicht möglich ist.

Page 24: Windows-ProgrammierungProf. Dr. W. Voigt CES-Löbau1 Windows-Programmierung mit dem C++ Builder 3 von Borland

Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau 24

Das eigentliche RechnenDie Funktion „Berechnen“

•Ist auf OnClick des Schalters bereits erzeugt worden.

•Sie wird nun gefüllt. Der Text des Edit1 steht überEdit1->Textzur Verfügung.

•Er wird in einen Puffer geschrieben.

•Dann wird der Text mittels atoi in eine Zahl konvertiert.

•Die Zahl wird quadriert und zur dritten Potenz erhoben.

•Das Ergebnis wird in Zeichenketten umgewandelt und in die Editfelder geschrieben.

Die Funktion „Berechnen“

•Ist auf OnClick des Schalters bereits erzeugt worden.

•Sie wird nun gefüllt. Der Text des Edit1 steht überEdit1->Textzur Verfügung.

•Er wird in einen Puffer geschrieben.

•Dann wird der Text mittels atoi in eine Zahl konvertiert.

•Die Zahl wird quadriert und zur dritten Potenz erhoben.

•Das Ergebnis wird in Zeichenketten umgewandelt und in die Editfelder geschrieben.

Erstellen Sie neu und prüfen Sie das Ergebnis!Erstellen Sie neu und prüfen Sie das Ergebnis!

Klassische Nostalgie

•Ein klassisches Konsolenprogramm würde sinngemäß nur diese wenigen Zeilen enthalten.

•So ist eben die Entwicklung.

Klassische Nostalgie

•Ein klassisches Konsolenprogramm würde sinngemäß nur diese wenigen Zeilen enthalten.

•So ist eben die Entwicklung.

void __fastcall TForm1::Berechnen(TObject *Sender)

{

int Size = Edit1->GetTextLen(); Size++; char *Buffer = new char[Size]; Edit1->GetTextBuf(Buffer,Size); int n = atoi(Buffer); itoa(n * n, Buffer, 10); Edit2->Text = Buffer; itoa(n * n * n, Buffer, 10); Edit3->Text = Buffer;

delete Buffer;

}

Page 25: Windows-ProgrammierungProf. Dr. W. Voigt CES-Löbau1 Windows-Programmierung mit dem C++ Builder 3 von Borland

Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau 25

Vielen Dank dafür, dass Sie so gut mitgespielt haben!

Mögen Sie zukünftig ein bisschen Spaß am Programmieren haben.

Vielen Dank dafür, dass Sie so gut mitgespielt haben!

Mögen Sie zukünftig ein bisschen Spaß am Programmieren haben.

wünscht Ih

nen