Tutorials
[ Zurück ]


wxWidgets für Visual C++


Vorbereitung:

wxWidgets Version: 2.18.12
Visual Studio Version: 10, Ultimate

wxWidgets 2.18.12 bzw. aktuelles Stable Release als tar.gz herunterladen und in einen beliebigen Ordner mit Schreibrechten für den aktuellen User entpacken.

wxWidgets Bibliotheken kompilieren:

Die wichtigsten Dateien (Visual C++ 6 Workspace) befinden sich in build\msw und heißen wx.dsw (für statische Bibliotheken im Debug oder Release Modus mit Endung .lib) und wx_dll.dsw (für dynamische Bibliotheken im Debug oder Release Modus mit Endung .dll).

Da die Dateien für eine ältere Visual Studio Version gemacht sind, muss man sie zuerst in das aktuelle Format konvertieren, was Visual Studio nach ein paar Klicks allein erledigt. Der Vorgang des Konvertierens und Laden der einzelnen Projekte, kann etwas Zeit in Anspruch nehmen.

Ist alles geladen und bereit, so kann man hier zwischen Debug und Release wählen. In meinem Fall wähle ich Release. Im Anschluss führt man einen Rechtsklick auf die Projektmappe wx aus, wählt im Kontextmenü Projektmappe erstellen. Beim Erstellen der einzelnen Projekte, können vereinzelt folgende Meldungen auftreten:

warning MSB8012: TargetPath(...\..\..\lib\vc_lib\core.lib) entspricht nicht dem OutputFile-Eigenschaftswert (...) von Library. Das Projekt wird daher möglicherweise nicht ordnungsgemäß erstellt. Damit dieses Problem behoben werden kann, müssen die Eigenschaftswerte für $(OutDir), $(TargetName) und $(TargetExt) dem in %(Lib.OutputFile) angegebenen Wert entsprechen.

Diese Meldungen kann man getrost ignorieren. Es wird zu keinem Abbruch des Erstellungsvorgangs kommen.

Die Bibliotheken

Wenn Visual Studio fertig ist, befinden sich die erstellten Bibliotheken unterhalb von lib/vc_lib und tragen die Endung .lib.

Ein erstes Projekt erstellen:

Zuerst erstellt man sich ein leeres Projekt.

VC++ Neues Projekt erstellen

Danach sollte man sich eine leere cpp-Datei zu seinem Projekt hinzufügen, damit man im Anschluss Einstellungen am C++ Compiler sowie Linker vornehmen kann. Da ich die Bibliotheken für Visual Studio im Release Modus kompiliert habe, kann auch ein Projekt, was diese Bibliotheken verwendet nur in diesem Modus kompiliert werden. (Der Linker wird sonst Fehlermeldungen erzeugen.)

Projekteinstellungen

Im Menüpunkt C\C++ nimmt man untenstehende Einstellungen vor.

C\C++ -> Allgemein -> Zusätzliche Includeverzeichnisse:

C:\Users\AUser\wxWidgets-2812\lib\vc_lib\msw
C:\Users\AUser\wxWidgets-2812\include\msvc
C:\Users\AUser\wxWidgets-2812\include

C\C++ -> Präprozessor -> Präprozessordefinitionen:

__WXMSW__


Ebenso sollte man auch keinen vorkompilierten Header benutzen. Siehe C\C++ -> Vorkompilierte Header -> Vorkompilierter Header -> Vorkompilierte Header nicht verwenden.

Beim Menüpunkt Linker sind diese Einstellungen zu treffen:

Linker -> Allgemein -> Zusätzliche Bibliotheksverzeichnisse:

C:\Users\AUser\wxWidgets-2812\lib\vc_lib

Linker -> Eingabe -> Zusätzliche Abhängigkeiten:

wxmsw28_core.lib
wxbase28.lib
wxtiff.lib
wxjpeg.lib
wxpng.lib
wxzlib.lib
wxregex.lib
wxexpat.lib
winmm.lib
comctl32.lib
rpcrt4.lib
wsock32.lib
odbc32.lib

Mit dieser Konfiguration sollte es möglich sein die wxWidgets Header zu verwenden.

Ein minimales Beispiel Programm:


#ifndef WX_PRECOMP
#include "wx\wx.h"
#endif

class MeineApp : public wxApp {
public:
virtual bool OnInit();
};

class EinFrame : public wxFrame {
public:
EinFrame (const wxString& text);

void OnQuit (wxCommandEvent& ev);
void OnAbout (wxCommandEvent& ev);

private:
DECLARE_EVENT_TABLE();
};

enum {
exExit = wxID_EXIT,
exAbout = wxID_ABOUT
};

bool MeineApp::OnInit () {
if ( !wxApp::OnInit() )
return false;

EinFrame* dasFrame = new EinFrame(_T("Hallo Welt"));
dasFrame->Show (true);
return true;
}

EinFrame::EinFrame (CONST wxString& text) :
wxFrame (NULL, wxID_ANY, text) {

#if wxUSE_MENUS
// create a menu bar
wxMenu *fileMenu = new wxMenu;

// the "About" item should be in the help menu
wxMenu *helpMenu = new wxMenu;
helpMenu->Append(exAbout, _T("&About...\tF1"), _T("Show about dialog"));

fileMenu->Append(exExit, _T("E&xit\tAlt-X"), _T("Quit this program"));

// now append the freshly created menu to the menu bar...
wxMenuBar *menuBar = new wxMenuBar();
menuBar->Append(fileMenu, _T("&File"));
menuBar->Append(helpMenu, _T("&Help"));

// ... and attach this menu bar to the frame
SetMenuBar(menuBar);
#endif // wxUSE_MENUS
 

Erstellt:30.05.11 18:06
Autor: Compiler

Letzte Änderung: 30.05.11 18:11
Geändert von: Compiler

Bewertungen:0
Bewertung:

Freigeschaltet: Ja
Views 4204

Klicke einfach auf einen Stern!
Wollen Sie wirklich das Tutorial löschen?
Wollen Sie wirklich dieses Tutorial zulassen?
Betreff: Report tutorial [id = 510] !
Absender:
Kommentar:
Wollen Sie wirklich dieses Tutorial zulassen?
Absender:
Kommentar:
Folgende User sind hier gerade aktiv:
-

ANZEIGE