Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Windows-Programmierung mit dem C++ Builder 3 von Borland

Ähnliche Präsentationen


Präsentation zum Thema: "Windows-Programmierung mit dem C++ Builder 3 von Borland"—  Präsentation transkript:

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

2 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 Windows-Programme teilen sich den Bildschirm den Speicher die Rechenzeit Sie bestehen aus Fenstern. 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) Schlussfolgerung: Von Windows-Programmen sind Fenster und Nachrichten zu verwalten. Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau

4 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 Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau

5 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 Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau

6 Prof. Dr. W. Voigt CES-Löbau
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, dass als Reaktion auf die Nachricht Aktionen erfolgen Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau

7 Prof. Dr. W. Voigt CES-Löbau
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 Erzeugung eines Projektes mit dem Quelltext „Zeichne.cpp“: DateiNeuAnwendung Fenster „Projektverwaltung“ öffnen Unit1 entfernen Projekt als „zeichne.bpr“ speichern. Datei „Zeichne.cpp“ schließen Originaldatei mit komplettem Quelltext „Zeichne.cpp“ in das Projektverzeichnis kopieren Programm starten Kompletter Quelltext Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau

8 Aufgabe 1 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? Programm starten Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau

9 Prof. Dr. W. Voigt CES-Löbau
Aufgabe 2 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 Programm starten Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau

10 Prof. Dr. W. Voigt CES-Löbau
Nothing is perfect ... 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! 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. Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau

11 Prof. Dr. W. Voigt CES-Löbau
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. Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau

12 Prof. Dr. W. Voigt CES-Löbau
Experten und Zauberer ... ... erleichtern die Arbeit des Windows-Programmierers ungemein. Beherrschen muss 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. Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau

13 Prof. Dr. W. Voigt CES-Löbau
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. Der Weg zu einer neuen Anwendung im Borland C++Builder: Menü DateiNeuProjekteSDI-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. 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“ Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau

15 Prof. Dr. W. Voigt CES-Löbau
Wir modifizieren ... 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 “ 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! Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau

16 Wir erweitern das Menü ... „Action“ ist gefordert!
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“ „Action“ ist gefordert! Der Befehl lässt sich anwählen, aber es passiert – nichts! Erstellen Sie neu und prüfen Sie das Ergebnis! 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!“ 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! Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau

18 Prof. Dr. W. Voigt CES-Löbau
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. 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. 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. Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau

20 Prof. Dr. W. Voigt CES-Löbau
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. 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“ Erstellen Sie neu und prüfen Sie das Ergebnis! 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“ 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. Erstellen Sie neu und prüfen Sie das Ergebnis! Das Programm lässt sich jetzt vernünftig schließen. Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau

23 Prof. Dr. W. Voigt CES-Löbau
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 Ausgabe der Zahlen Zwei Labels und zwei Editfelder. Bei beiden Editfeldern wird ReadOnly auf true gesetzt, damit ein Editieren nicht möglich ist. Erstellen Sie neu und prüfen Sie das Ergebnis! Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau

24 Das eigentliche Rechnen
Klassische Nostalgie Ein klassisches Konsolenprogramm würde sinngemäß nur diese wenigen Zeilen enthalten. So ist eben die Entwicklung. Die Funktion „Berechnen“ Ist auf OnClick des Schalters bereits erzeugt worden. Sie wird nun gefüllt. Der Text des Edit1 steht über Edit1->Text zur 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. 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; } Erstellen Sie neu und prüfen Sie das Ergebnis! Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau

25 Prof. Dr. W. Voigt CES-Löbau
Ende Vielen Dank dafür, dass Sie so gut mitgespielt haben! Mögen Sie zukünftig ein bisschen Spaß am Programmieren haben. wünscht Ihnen Windows-Programmierung Prof. Dr. W. Voigt CES-Löbau


Herunterladen ppt "Windows-Programmierung mit dem C++ Builder 3 von Borland"

Ähnliche Präsentationen


Google-Anzeigen