einf ührung in wxwidgets & wxdev...

13
Einführung in wxWidgets & wxDev-C++ Folie 1/13 Peter Ungelenk Einf Einf ü ü hrung in hrung in wxWidgets wxWidgets & & wxDev wxDev - - C C ++ ++ Vortrag im Rahmen der Vorlesung Computational Physics im Sommersemester 2009

Upload: phamdieu

Post on 17-Jul-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

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