IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

wxWidgets Discussion :

Newbie wxWidgets sous C++


Sujet :

wxWidgets

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2019
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Newbie wxWidgets sous C++
    Bonjour à tous,

    Pour mettre les choses au clair... je ne suis ni un pro C++, ni un pro wxWidgets !!!
    Mais n'arrivant pas à mettre la main sur la solution à mon problème aussi bien dans la doc que sur le net... je tente ma chance sur ce forum

    Mon environnement :
    Windows 10
    CodeLite 14
    wxWidgets 3.1.4
    MinGW-W64 8.1.0

    Mon problème tout simple... une fenêtre avec un radiobox et 2 boutons.
    Le RadioBox donne une liste de choix.
    L'un des boutons exécute, via un event wxEVT_BUTTON (suite à un bind), une action dont le déroulement dépendra de ce qui aura été sélecté via le RadioBox.
    L'autre bouton sort de l'appli.

    Quand je clique sur les boutons... j'exécute bien le code de l'Event mais je n'arrive pas à la lire la valeur de la RadioBox via :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::string focuser = FocuserBox->GetStringSelection();
    ou bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::string focuser = FocuserBox.GetStringSelection();
    La compilation me donne l’erreur :
    FocuserBox was not declare in this scope
    Quelqu'un pourrait-il se pencher sur mon cas désespéré

    Cordialement,

    Philippe

    Ma déclaration de classes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include<wx/wx.h>
    class MyFrame: public wxFrame
    {
    public:
    	MyFrame(std::string var);
    	void OnQuit(wxCommandEvent& event);
            void OnProcess(wxCommandEvent& event);
    };
    Mes events (pour l'instant, ce ne sont que des tests...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) 
    {
            // Bouton fermeture
    	this->Close(true);
    }
     
    void MyFrame::OnProcess(wxCommandEvent& evt) //WXUNUSED(event))
    {
            // Code des process sauvegarde et restauration
            std::string focuser = FocuserBox->GetStringSelection();
    	int controlId = evt.GetId();
    	std::string str = "";
    	switch (controlId) 
    	{
    		case -31998: 
    			str = "RodioBox Action";
    			break;
    		case -31994: 
    			str = "RadioBox Focuser";
    			break;
    		case -31988: 
    			str = "Button Lancer FineFocus";
    			break;
    	}
    	int answer = wxMessageBox("Quit program? " + str, "Confirm", wxYES_NO, this);
    	if (answer == wxYES)
    	{
    		this->Close();
    	}
    }

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Février 2006
    Messages : 562
    Points : 859
    Points
    859
    Par défaut
    Bonsoir.

    Voici un exemple de d'utilisation du contrôle wxRadioBox => http://www.wxdev.fr/snippet27-Les_ch...ocher_etc.html

  3. #3
    Membre averti Avatar de wxXav
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Décembre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 214
    Points : 354
    Points
    354
    Par défaut
    Hello.

    Citation Envoyé par pe78420 Voir le message
    ......

    La compilation me donne l’erreur : FocuserBox was not declare in this scope

    ......
    L'erreur que tu obtiens t'indique que la variable "FocuserBox" est inconnue au bataillon à l'endroit où tu l'utilises.

    Dans ton cas, il faudrait que la variable soit membre de ta classe "MyFrame"

    Sinon, tu peux peut-être récupérer le pointeur dont tu as besoin depuis la variable "wxEvent" passée en paramètre de ta fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void MyFrame::OnProcess(wxCommandEvent& evt)
    {
        wxRadioBox *FocuserBox = evt.GetEventObject();
        // Code des process sauvegarde et restauration
        std::string focuser = FocuserBox->GetStringSelection();
        ......
    }
    Au passage : pense à utiliser la balise "CODE" de l'éditeur quand tu postes du code sur le forum : c'est beaucoup plus lisible que de coller le code tel-quel.

    @+
    Xav'

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2019
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Merci à vous 2 ddaime et wxXav,

    Je regarde ça...
    J'ai déclaré FocuserBox et ActionBox dans la classe comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include<wx/wx.h>
     
    class MyFrame: public wxFrame
    {
    public:
    	MyFrame(std::string var);
    private:
    	void OnQuit(wxCommandEvent& event);
        void OnProcess(wxCommandEvent& event);
     
    	wxRadioBox *FocuserBox;
    	wxRadioBox *ActionBox;
    };
    Coté "events"... je n'ai codé que ça pour tester au debugger :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) 
    {
        // Bouton fermeture
    	this->Close(true);
    }
     
    void MyFrame::OnProcess(wxCommandEvent& WXUNUSED(event))
    {
    	wxString focuser = FocuserBox->GetStringSelection();
    	wxString action = ActionBox->GetStringSelection();
    }
    Maintenant je n'ai plus l'erreur à la compilation mais un plantage au run... faut que je regarde plus en avant le fonctionnement du RadioBox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    0  0x000000000040209c  MyFrame::OnProcess  C:\\Users\\Philippe\\Documents\\GitHub\\FFwrapper\\ffwrapper.cpp  60
    1  0x0000000000402a24  wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&, wxEvent&) const    
    2  0x00000000004bd712  wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&)    
    3  0x00000000004bdba4  wxEvtHandler::SearchDynamicEventTable(wxEvent&)    
    4  0x00000000004bdf12  wxEvtHandler::TryHereOnly(wxEvent&)    
    5  0x00000000004bdf9d  wxEvtHandler::ProcessEventLocally(wxEvent&)    
    6  0x00000000004be081  wxEvtHandler::ProcessEvent(wxEvent&)    
    7  0x00000000004c03bb  wxEvtHandler::SafelyProcessEvent(wxEvent&)    
    8  0x000000000052f03c  wxButton::SendClickEvent()    
    9  0x0000000000517de7  wxWindow::HandleCommand(unsigned short, unsigned short, HWND__*)    
    10  0x0000000000522c4a  wxWindow::MSWHandleMessage(long long*, unsigned int, unsigned long long, long long)    
    11  0x0000000000512afc  wxWindow::MSWWindowProc(unsigned int, unsigned long long, long long)    
    12  0x00007fff29255c7d  USER32!CallWindowProcW    
    13  0x00007fff2925528c  USER32!SendMessageW    
    14  0x00007fff29254ff8  USER32!SendMessageW    
    15  0x00007fff29276d05  USER32!SetWindowsHookExAW    
    16  0x00007fff2927f08a  USER32!SetWindowsHookExAW    
    17  0x00007fff2925ac47  USER32!SetWindowLongA    
    18  0x00007fff29255c7d  USER32!CallWindowProcW    
    19  0x00007fff2925594e  USER32!CallWindowProcW    
    20  0x0000000000518a4f  wxWindow::MSWDefWindowProc(unsigned int, unsigned long long, long long)    
    21  0x0000000000512b24  wxWindow::MSWWindowProc(unsigned int, unsigned long long, long long)    
    22  0x000000000052479f  wxAnyButton::MSWWindowProc(unsigned int, unsigned long long, long long)    
    23  0x00007fff29255c7d  USER32!CallWindowProcW    
    24  0x00007fff29255672  USER32!DispatchMessageW    
    25  0x00007fff29256e10  USER32!IsDialogMessageW    
    26  0x00000000005154db  wxWindow::MSWSafeIsDialogMessage(tagMSG*)    
    27  0x0000000000515729  wxWindow::MSWProcessMessage(tagMSG*)    
    28  0x0000000000523bda  wxGUIEventLoop::PreProcessMessage(tagMSG*)    
    29  0x0000000000523aa1  wxGUIEventLoop::ProcessMessage(tagMSG*)    
    30  0x00000000005238b6  wxGUIEventLoop::Dispatch()    
    31  0x00000000004236e3  wxEventLoopManual::ProcessEvents()    
    32  0x00000000004237ce  wxEventLoopManual::DoRun()    
    33  0x0000000000423439  wxEventLoopBase::Run()    
    34  0x0000000000406a0a  wxAppConsoleBase::MainLoop()    
    35  0x000000000068d4a5  wxEntryReal(int&, wchar_t**)    
    36  0x00000000004021e3  WinMain  C:\\Users\\Philippe\\Documents\\GitHub\\FFwrapper\\main.cpp  11
    37  0x00000000004013c7  __tmainCRTStartup    
    38  0x00000000004014cb  WinMainCRTStartup

  5. #5
    Membre averti Avatar de wxXav
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Décembre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 214
    Points : 354
    Points
    354
    Par défaut
    Hello.

    Les déclarations semblent correctes : peux-tu poster le code complet de ta frame stp.

    Je pense avoir une idée mais je ne vaux pas raconter de bêtises donc je préfère vérifier avant.

    @+
    Xav'

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2019
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par wxXav Voir le message
    Hello.

    Les déclarations semblent correctes : peux-tu poster le code complet de ta frame stp.

    Je pense avoir une idée mais je ne vaux pas raconter de bêtises donc je préfère vérifier avant.

    @+
    Xav'
    Voici le code de ma frame tel qu'il est à ce jour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    #include "ffwrapper.hpp"
    #include <wx/gbsizer.h>
     
    // Fenêtre principal (seul fenêtre)
    MyFrame::MyFrame(std::string var) : wxFrame(NULL, -1, "Wrapper FineFocus XXXX",
    						wxDefaultPosition, wxDefaultSize,
    						wxMINIMIZE_BOX | wxSYSTEM_MENU | wxCAPTION | wxCLOSE_BOX | wxCLIP_CHILDREN)
    {
    	// Définition du panel et du grid
    	wxPanel *panel = new wxPanel(this, -1);
    	wxGridBagSizer *grid_BS = new wxGridBagSizer(0, 0);
    	panel->SetSizerAndFit(grid_BS);
     
    	// Définition du RadioBox "Action"
    	wxArrayString action_list;
    	action_list.Add("Sauvegarder");
    	action_list.Add("Restaurer");
    	wxRadioBox *ActionBox = new wxRadioBox(panel, -1, "1-Choisir l'action a effectuer", wxDefaultPosition, wxDefaultSize, action_list, 1, wxRA_SPECIFY_COLS);
     
    	// Définition du RadioBox "Focuser"
    	wxArrayString focuser_list;
    	focuser_list.Add("Focuser C8");
    	focuser_list.Add("Crayford C8");	
    	focuser_list.Add("Crayford LU80");
    	wxRadioBox *FocuserBox = new wxRadioBox(panel, -1, "2-Choisir le focuser à utiliser", wxDefaultPosition, wxDefaultSize, focuser_list, 1, wxRA_SPECIFY_COLS);
     
    	// Définition des boutons
    	wxButton *CloseButton = new wxButton(panel, -1, "Fermer", wxPoint(20,20), wxDefaultSize);
    	wxButton *ProcessButton = new wxButton(panel, -1, "3-Lancer FineFocus", wxPoint(20,20), wxDefaultSize);
     
    	grid_BS->Add(ActionBox, wxGBPosition(0, 0), wxGBSpan(1, 1), wxTOP | wxBOTTOM | wxLEFT | wxRIGHT, 15, NULL);
    	grid_BS->Add(FocuserBox, wxGBPosition(0, 1), wxGBSpan(1, 1), wxTOP | wxBOTTOM |wxRIGHT, 15, NULL);
    	grid_BS->Add(ProcessButton, wxGBPosition(1, 0), wxGBSpan(1, 1), wxALIGN_CENTER | wxBOTTOM |wxLEFT, 15, NULL);
    	grid_BS->Add(CloseButton, wxGBPosition(1, 1), wxGBSpan(1, 1), wxALIGN_CENTER | wxBOTTOM |wxLEFT | wxRIGHT, 15, NULL);
     
    	// Bind des boutons
    	CloseButton->Bind(wxEVT_BUTTON, &MyFrame::OnQuit, this);
    	ProcessButton->Bind(wxEVT_BUTTON, &MyFrame::OnProcess, this);
     
    	grid_BS->Fit(this);
    	grid_BS->SetSizeHints(this);
    }
     
    void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) 
    {
        // Bouton fermeture
    	this->Close(true);
    }
     
    void MyFrame::OnProcess(wxCommandEvent& WXUNUSED(event))
    {
    	wxString focuser = FocuserBox.GetStringSelection();
    	wxString action = ActionBox.GetStringSelection();
        // à partir de là... code des process sauvegarde et restauration
    }

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2019
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    A priori il y a quelque chose de pas initialisée !
    J'ai un SIGSEGV

  8. #8
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Février 2006
    Messages : 562
    Points : 859
    Points
    859
    Par défaut
    Bonjour.

    Si tu as déjà déclaré tes 2 contrôles wxRadioBox dans la partie déclarative de ta classe il est alors inutile de les redéclarer dans la partie implémentation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // Définition du RadioBox "Action"
    	wxArrayString action_list;
    	action_list.Add("Sauvegarder");
    	action_list.Add("Restaurer");
    	ActionBox = new wxRadioBox(panel, -1, "1-Choisir l'action a effectuer", wxDefaultPosition, wxDefaultSize, action_list, 1, wxRA_SPECIFY_COLS);
     
    	// Définition du RadioBox "Focuser"
    	wxArrayString focuser_list;
    	focuser_list.Add("Focuser C8");
    	focuser_list.Add("Crayford C8");	
    	focuser_list.Add("Crayford LU80");
    	FocuserBox = new wxRadioBox(panel, -1, "2-Choisir le focuser à utiliser", wxDefaultPosition, wxDefaultSize, focuser_list, 1, wxRA_SPECIFY_COLS);
    Ensuite dans ta fonction OnProcess, puisque tu as déclaré tes 2 contrôles comme pointeurs tu dois utiliser l'opérateur -> pour accéder aux propriétés de tes contrôles;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	wxString focuser = FocuserBox->GetStringSelection();
    	wxString action = ActionBox->GetStringSelection();
        // à partir de là... code des process sauvegarde et restauration
    	wxMessageBox(focuser + wxT(" ") + action);

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2019
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par ddaime Voir le message
    Bonjour.

    Si tu as déjà déclaré tes 2 contrôles wxRadioBox dans la partie déclarative de ta classe il est alors inutile de les redéclarer dans la partie implémentation...

    Ensuite dans ta fonction OnProcess, puisque tu as déclaré tes 2 contrôles comme pointeurs tu dois utiliser l'opérateur -> pour accéder aux propriétés de tes contrôles...
    Cool... ça fonctionne !!!

    Etrange... je pensais que le compilateur réagissait avec une erreur suite à ce genre de double déclaration

    Maintenant il ne me reste plus qu'à continuer...

    Prochaine étape :
    • Lecture d'un fichier de conf dans Main puis chargement d'une variable JSON (déjà fait)
    • Passage de cette variable JSON dans la class MyFrame pour être utilisée dans les méthodes MyFrame et OnProcess (à faire...)


    Un grand Merci

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2019
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par pe78420 Voir le message
    Cool... ça fonctionne !!!

    Etrange... je pensais que le compilateur réagissait avec une erreur suite à ce genre de double déclaration

    Maintenant il ne me reste plus qu'à continuer...

    Prochaine étape :
    • Lecture d'un fichier de conf dans Main puis chargement d'une variable JSON (déjà fait)
    • Passage de cette variable JSON dans la class MyFrame pour être utilisée dans les méthodes MyFrame et OnProcess (à faire...)


    Un grand Merci
    Sans oublier la problématique de la visualisation des accents dans les labels !!!!

  11. #11
    Membre averti Avatar de wxXav
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Décembre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 214
    Points : 354
    Points
    354
    Par défaut
    Citation Envoyé par pe78420 Voir le message
    Sans oublier la problématique de la visualisation des accents dans les labels !!!!
    C'est généralement un problème venant de l'encodage du fichier source.

    @+
    Xav'

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juillet 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2019
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par wxXav Voir le message
    C'est généralement un problème venant de l'encodage du fichier source.

    @+
    Xav'
    Bonjour Xav,

    Euh... tu peux m'en dire un peu plus STP ?

    Philippe

  13. #13
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations forums :
    Inscription : Février 2006
    Messages : 562
    Points : 859
    Points
    859
    Par défaut
    Bonjour.

    Le problème à déjà été maintes fois évoqué => https://www.developpez.net/forums/d2...t-code-blocks/

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/10/2007, 20h58
  2. Réponses: 1
    Dernier message: 21/09/2007, 20h50
  3. Utiliser wxWidgets sous devcpp ?
    Par aziz jim dans le forum wxWidgets
    Réponses: 3
    Dernier message: 28/06/2006, 14h04
  4. Installation de wxwidgets sous xp ?
    Par duranton dans le forum wxWidgets
    Réponses: 8
    Dernier message: 21/03/2006, 09h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo