View
220
Download
0
Category
Preview:
Citation preview
Einführung in wxWidgets & wxDev-C++
Folie 1/13Peter Ungelenk
EinfEinfüührung inhrung in
wxWidgetswxWidgets & & wxDevwxDev--CC++++
Vortrag im Rahmen der Vorlesung
Computational Physicsim Sommersemester 2009
Einführung in wxWidgets & wxDev-C++
Folie 2/13Peter Ungelenk
Gliederung
� wxWidgets: Übersicht
� wxDev-C++: Übersicht
� Installation
� wxWidgets Syntax
� Beispiel: Textfeld
� Links & weitere Hilfe
� Live-Beispiel
Einführung in wxWidgets & wxDev-C++
Folie 3/13Peter Ungelenk
wxWidgets: Übersicht
• Geschichte:
� 1992 als kleines Projekt gestartet (an der University of Edinburgh, nur Windows & Unix)
� unterstützt mittlerweile Windows, Linux, Mac, WinCE, …
• Eigenschaften:
� wxWidgets: API = Programmierschnittstelle auf Quelltextebene
� nutzt plattformnative Funktionen → passender „Look“
� Open Source→ von großer Gemeinde unterstützt
� leicht abgeänderte L-GPL Lizenz, ausführbare Programme dürfen unter eigener Lizenz veröffentlicht werden
Einführung in wxWidgets & wxDev-C++
Folie 4/13Peter Ungelenk
wxWidgets: Übersicht
• Aufbau:
� fertige Frame- oder Control-Klassen
� durch Vererbung um eigene Objekte/Funktionen erweiterbar
� Zugriff auf Klassen bzw. Instanzen durch Zeiger und Funktionen
• Programme, die wxWidgets verwenden:
� Audacity, FileZilla, BitWiseIM, AOL Communicator, …
Einführung in wxWidgets & wxDev-C++
Folie 5/13Peter Ungelenk
wxDev-C++: Übersicht
• das „originale“ Dev-C++:
� freie C++ Entwicklungsumgebung
� seit 2005 nicht mehr weiterentwickelt
• wxDev-C++:
� eigenständige Erweiterung zu Dev-C++
� wird aktiv weiterentwickelt
� bietet einen Formdesigner für wxWidgets
� kommt als Komplettpaket: Entwicklungsumgebung inkl. Formdesigner, wxWidgets-Bibliotheken, g++-Compiler
Einführung in wxWidgets & wxDev-C++
Folie 6/13Peter Ungelenk
Installation
• ohne wxDev-C++:
� Quellcode herunterladen, Bibliothek kompilieren, IDE konfigurieren
� kein Designer
• mit wxDev-C++:
� wxDev-C++ herunterladen
� installieren & konfigurieren
� sofort einsatzbereit
Einführung in wxWidgets & wxDev-C++
Folie 7/13Peter Ungelenk
wxWidgets Syntax
• wxWidgets/wxDev-C++ ist C++ → normale, bekannte Syntax
• Teilweise eigene Strukturen, z.B. wxString, aber genauso wie std::String verwendbar
• Nutzung der Objekte (Klassen) durch Zeiger und Funktionen
� z.B.: Textfeld-Inhalt setzten mit: textfeld->SetValue(wxString)
• Zwischenfazit:
� nur ein paar neue, aber intuitive Funktionsnamen lernen
cout << “Hello World!”;
int n = String1.length();
Einführung in wxWidgets & wxDev-C++
Folie 8/13Peter Ungelenk
Beispiel: Textfeld
Textfeld „wxTextCtrl“
mit Maus platzieren
Eigenschaften festlegen
Einführung in wxWidgets & wxDev-C++
Folie 9/13Peter Ungelenk
Beispiel: Textfeld – Eigenschaften
• Edit Style: wxTE_READONLY
� Inhalt editierbar: True/False
• Font
� Schriftart, -größe, … festlegen
• Name
� interne Bezeichnung, vgl. n. Folie
• Strings
� Inhalt vorgeben
Einführung in wxWidgets & wxDev-C++
Folie 10/13Peter Ungelenk
Beispiel: Textfeld - Code
• Inhalt löschen: wxMemo1->Clear()
� kein Rückgabewert
• Inhalt auslesen: wxMemo1->GetValue()
� gibt wxString zurück
• Inhalt setzen: wxMemo1->SetValue(inhalt)
� kein Rückgabewert
• Datei laden: wxMemo1->LoadFile(filename)
� gibt bool zurück, ob erfolgreich
• in Datei speichern: wxMemo1->SaveFile(filename)
� gibt bool zurück, ob erfolgreich
Typ wxString
Typ wxString
Typ wxString
Einführung in wxWidgets & wxDev-C++
Folie 11/13Peter Ungelenk
Links & weitere Hilfe
• Download wxWidgets:
� http://wxwidgets.org/
• Download wxDev-C++:
� http://wxdsgn.sourceforge.net/
• „Programming with wxDev-C++“ Handbuch:
� http://wxdevcpp-book.sourceforge.net/
• ausführliches wxWidgets-Buch:
� http://www.informit.com/content/images/0131473816/downloads/0131473816_book.pdf
Mit vielen weiteren Informationen und Links
Tutorials, Wiki, Dokumentation, Links
Sehr detaillierte Schritt-für-Schritt Anleitung zur Installation, Tutorials und Beispiele zu C, C++ und
wxWidgets
Einführung in wxWidgets & wxDev-C++
Folie 12/13Peter Ungelenk
Live-Beispiel
void Pi (wxTextCtrl * output, const unsigned long digits, wxProgressDialog * calcprogress)
{
if ( digits > 15000 )
{
output->AppendText("Pi error: maximum digits are 15000\n");
return;
}
int prgr=0;
long prgrcnt=0;
calcprogress->Resume();
calcprogress->Show();
const unsigned long LEN = (digits/4+1)*14;
long a[LEN];
long b = 0;
long c = LEN;
long d = 0;
long e = 0;
long f = 10000;
long g = 0;
long h = 0;
for ( ; (b=c-=14) > 0 ; )
{
prgrcnt+=4;
prgr=int( prgrcnt*1.0/digits*100 );
if (!calcprogress->Update(prgr))
{
calcprogress->Show(false);
return;
}
for ( ; --b > 0 ; )
{
d *= b;
if (h == 0)
d += 2000 * f;
else
d += a[b] * f;
g = b+b-1;
a[b] = d%g;
d /= g;
}
output->AppendText(wxString::Format("%04ld",e+d/f));
h = 4;
d = e = d%f;
}
calcprogress->Show(false);
}
Berechnung von π auf 15000 Stellen
Einführung in wxWidgets & wxDev-C++
Folie 13/13Peter Ungelenk
Live-Beispiel – Tröpfelalgorithmus
• Prinzip:
� nutze Reihendarstellung
� interpretiere als Zahl in Stellensystem variabler Basis
� führe Radixkonvertierung in Dezimalsystem durch
� gebe berechnete Stellen direkt aus
• Vorteile:
� man kann „zusehen“
� nur kleine Zahlen im Speicher → Standard-Datentypen reichen
� immer noch relativ schnell
� wenig Quellcode
( )
++++= ...2
7
32
5
22
3
12π
wichtig für uns:Typ long reicht
Recommended