pourquoi mon programme a-il un design différent?

Le problème exposé dans ce sujet a été résolu.

Bonjour à tous,

je débute avec WxWidgets (pour ceux qui confissent pas : c'est une librairie qui permet de faire un GUI multi-plateforme. Elle est utilisée dans filezilla, codeblocks....etc…).

je viens d'installer la librairie (sous windows). Pour faire un test de compilation, j'ai pris un petit exemple sur internet(sur le siteduzero). je m’attendais a avoir un beau design windows-7 like, comme celui ci :

mais à la place, j'obtient ceci :

ou est passé le beau design aero de windows 7? que s'est il passé?

..je suppose que cela vient de mon compilateur(gcc 4.9.2 - mingw), ou de la librairie wxWidgets que j'ai mal compilée?

Voici mon code source, ainsi que la ligne de commande de compilation : (je précise que celui ci compile sans warning, il est correct)

 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
85
86
87
88
89
90
91
92
93
94
95
96
/*
ligne de compilation : 
g++.exe main.cpp -o main.exe -lwxmsw31u -lwxtiff -lwxjpeg -lwxpng -lwxzlib -lwxregexu -lwxexpat -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwxregexu -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 -mthreads -DHAVE_W32API_H -D__WXMSW__ -D__WXDEBUG__ -D_UNICODE -DWXUSINGDLL -Wno-ctor-dtor-privacy -pipe -fmessage-length=0 -mwindows
*/

#include <wx/wx.h>
#include <wx/statline.h>


class MyApp : public wxApp
{
    public :

    virtual bool OnInit();

};
DECLARE_APP(MyApp);


class MainFrame : public wxFrame
{
    public:
        MainFrame(const wxString& title) : wxFrame(NULL, wxID_ANY, title)
        {
                wxPanel *panelAffichage = new wxPanel(this, -1);// Création du panel d'affichage
                wxBoxSizer *sizer_intermed = new wxBoxSizer(wxVERTICAL); // Création du wxBoxSizer intermédiaire  
                wxStaticBoxSizer *cadre = new wxStaticBoxSizer(wxVERTICAL, panelAffichage, _T("Informations : ")); // Création du wxStaticBoxSizer pour le cadre
                wxFlexGridSizer *grille = new wxFlexGridSizer(4, 2, 5, 5);// Création du wxFlexGridSizer

                wxStaticText *labelNom = new wxStaticText(panelAffichage, -1, _T("Nom :")); // wxStaticText pour le nom
                grille->Add(labelNom, 0, wxALIGN_CENTER_VERTICAL | wxALIGN_RIGHT);

                wxTextCtrl *txtNom = new wxTextCtrl(panelAffichage, -1, _T("")); // wxTextCtrl pour le nom
                grille->Add(txtNom, 0, wxEXPAND);

                wxStaticText *labelPrenom = new wxStaticText(panelAffichage, -1, _T("Prénom :")); // wxStaticText pour le prénom
                grille->Add(labelPrenom, 0, wxALIGN_CENTER_VERTICAL | wxALIGN_RIGHT);

                wxTextCtrl *txtPrenom = new wxTextCtrl(panelAffichage, -1, _T(""));
                grille->Add(txtPrenom, 0, wxEXPAND); // wxTextCtrl pour le prénom

                wxStaticText *labelDate = new wxStaticText(panelAffichage, -1, _T("Date de naissance :")); // wxStaticText pour la date de naissance
                grille->Add(labelDate, 0, wxALIGN_CENTER_VERTICAL | wxALIGN_RIGHT);

                wxTextCtrl *txtDate = new wxTextCtrl(panelAffichage, -1, _T(""));  // wxTextCtrl pour la date de naissance
                grille->Add(txtDate, 0, wxEXPAND);

                wxStaticText *labelComm = new wxStaticText(panelAffichage, -1, _T("Commentaires :"));// wxStaticText pour les commentaires
                grille->Add(labelComm, 0, wxALIGN_CENTER_VERTICAL | wxALIGN_RIGHT);

                wxTextCtrl *txtComm = new wxTextCtrl(panelAffichage, -1, _T(""), wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE);
                grille->Add(txtComm, 0, wxEXPAND);// wxTextCtrl pour les commentaires

                cadre->Add(grille, 1, wxALL | wxEXPAND, 5);// Ajout de la grille au wxStaticBoxSizer

                grille->AddGrowableCol(1);// La deuxième colonne est extensible
                grille->AddGrowableRow(3);  // La quatrième ligne également

                sizer_intermed->Add(cadre, 1, wxALL | wxEXPAND, 5); // Ajout du wxStaticBoxSizer au sizer intermédiaire


                wxStaticLine *ligneHoriz = new wxStaticLine(panelAffichage, -1);  // Création de la ligne de séparation horizontale et ajout au sizer intermédiaire
                sizer_intermed->Add(ligneHoriz, 0, wxALL | wxEXPAND, 5);

                wxBoxSizer *sizer_boutons = new wxBoxSizer(wxHORIZONTAL); // Création du wxBoxSizer pour les boutons

                wxButton *btnValider = new wxButton(panelAffichage, -1, _T("Valider")); // Création du bouton "Valider"
                sizer_boutons->Add(btnValider, 0);

                sizer_boutons->AddSpacer(5);// Ajout d'un espace entre les deux boutons

                wxButton *btnAnnuler = new wxButton(panelAffichage, -1, _T("Annuler"));// Création du bouton "Annuler"
                sizer_boutons->Add(btnAnnuler, 0);

                sizer_intermed->Add(sizer_boutons, 0, wxALIGN_RIGHT | wxALL, 5);        // Ajout du sizer des boutons au sizer intermédiaire

                panelAffichage->SetSizer(sizer_intermed); // Affectation du sizer intermédiaire au wxPanel


        }

        virtual ~MainFrame(){};
};



IMPLEMENT_APP(MyApp);


bool MyApp::OnInit()
{
     MainFrame *frm=new MainFrame(_T("Test"));
    frm->Show();

    return true;
}
+0 -0

exact :p cela vient du fait que je n'ai pas ajouté le fichier de ressources.

Pour ceux qui tombent sur ce forum car ils ont le même problème, voici les étapes pour résoudre ce problème : -creez vous un fichier resource.rc dans lequel vous écrivez juste #include "wx/msw/wx.rc". Puis ajoutez le fichier à votre projet.

Si vous compilez en ligne de commande, voici les lignes de compilation : winres.exe "ressources.rc" resources.o gcc.exe "votrefichier.cpp" ressources.o - o "votrefichier.exe" -lesArgsDuLinker

(dans les arguments du linker il faut inclure la librairie wxwidget… -lwxmsw31u chez moi)

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte