Featured image of post Utilisation de wxWidgets : De la méthode d'installation à la création d'un projet d'exemple

Utilisation de wxWidgets : De la méthode d'installation à la création d'un projet d'exemple

Nous expliquons de manière simple pour les débutants la procédure d'installation de la bibliothèque GUI multiplateforme C++ 'wxWidgets', ainsi que la méthode de création d'un projet d'exemple en utilisant Visual Studio.

Qu’est-ce que wxWidgets

wxWidgets est une bibliothèque GUI C++ qui fonctionne sur des plateformes telles que Windows, Mac, Linux, Android, iOS, etc.

Installation de wxWidgets

  1. Ouvrez https://www.wxwidgets.org/downloads/ et téléchargez le Windows Installer.
  2. Exécutez wxMSW-3.2.2.1-Setup.exe pour l’installer.
  3. Ouvrez “C:\wxWidgets-3.2.2.1\build\msw\wx_vc17.sln” à partir du dossier installé.
  4. Après avoir ouvert wx_vc17.sln, sélectionnez Générer > Générer par lots.
  5. Appuyez sur le bouton Sélectionner tout, puis sur le bouton Régénérer.
  6. Une fois la compilation terminée, fermez temporairement Visual Studio.

Création du projet d’exemple

  1. Ouvrez Visual Studio.
  2. Sélectionnez Fichier > Nouveau > Projet.
  3. Sélectionnez Application de bureau Windows (les onglets sont C++, Windows, Bureau).
  4. Entrez wxWidgetsSample dans Nom du projet.
  5. Cliquez sur Créer.
  6. Faites un clic droit sur wxWidgetsSample et sélectionnez Propriétés.
  7. Dans Propriétés de configuration > C/C++ > Autres répertoires Include, ajoutez C:\wxWidgets-3.2.2.1\include et C:\wxWidgets-3.2.2.1\include\msvc.
  8. Dans Propriétés de configuration > Éditeur de liens > Répertoires de bibliothèques supplémentaires, ajoutez C:\wxWidgets-3.2.2.1\lib\vc_x64_lib.
  9. Ouvrez wxWidgetsSample.cpp et remplacez-le par le code ci-dessous.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#pragma comment(linker,"\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")

#include <wx/wxprec.h>

#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif

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

class MyFrame : public wxFrame
{
public:
	MyFrame();
private:
	void OnHello(wxCommandEvent& event);
	void OnExit(wxCommandEvent& event);
	void OnAbout(wxCommandEvent& event);
};

enum
{
	ID_Hello = 1
};

wxIMPLEMENT_APP(MyApp);

bool MyApp::OnInit()
{
	MyFrame* frame = new MyFrame();
	frame->Show(true);
	return true;
}

MyFrame::MyFrame()
	: wxFrame(NULL, wxID_ANY, "Hello World")
{
	wxMenu* menuFile = new wxMenu;
	menuFile->Append(ID_Hello, "&Hello...\tCtrl-H",
		"Help string shown in status bar for this menu item");
	menuFile->AppendSeparator();
	menuFile->Append(wxID_EXIT);
	wxMenu* menuHelp = new wxMenu;
	menuHelp->Append(wxID_ABOUT);
	wxMenuBar* menuBar = new wxMenuBar;
	menuBar->Append(menuFile, "&File");
	menuBar->Append(menuHelp, "&Help");
	SetMenuBar(menuBar);

	wxButton* button1 = new wxButton(this, ID_Hello, _("Hello"), wxPoint(20, 20), wxSize(100, 32));
	Connect(ID_Hello, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MyFrame::OnHello));

	wxButton* button2 = new wxButton(this, wxID_ABOUT, _("About"), wxPoint(20, 60), wxSize(100, 32));
	Connect(wxID_ABOUT, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MyFrame::OnAbout));

	wxButton* button3 = new wxButton(this, wxID_EXIT, _("Exit"), wxPoint(20, 100), wxSize(100, 32));
	Connect(wxID_EXIT, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(MyFrame::OnExit));

	CreateStatusBar();
	SetStatusText("Welcome to wxWidgets!");
	Bind(wxEVT_MENU, &MyFrame::OnHello, this, ID_Hello);
	Bind(wxEVT_MENU, &MyFrame::OnAbout, this, wxID_ABOUT);
	Bind(wxEVT_MENU, &MyFrame::OnExit, this, wxID_EXIT);
}

void MyFrame::OnExit(wxCommandEvent& event)
{
	Close(true);
}

void MyFrame::OnAbout(wxCommandEvent& event)
{
	wxMessageBox("This is a wxWidgets' Hello world sample",
		"About Hello World", wxOK | wxICON_INFORMATION);
}

void MyFrame::OnHello(wxCommandEvent& event)
{
	wxLogMessage("Hello world from wxWidgets!");
}
  1. Lors de la compilation et de l’exécution, une fenêtre comme celle ci-dessous s’ouvrira.

img_1.png

Références

Le projet d’exemple est disponible ci-dessous. wxWidgetsSample

C’est tout.

comments powered by Disqus