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 :

Problème affichage application wxWidgets


Sujet :

wxWidgets

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de AuraHxC
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 652
    Par défaut Problème affichage application wxWidgets
    Donc j'ai un petit soucis je remets l'imprim écran et mon code.
    Pardon d'avance j'ai pas trop bien structuré mon code je débute en C++ mais j'ai capté comment faire donc je le referais après que mon erreur soit résolu

    mainframe.h :

    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
     
     
    #ifndef __MAINFRAME_H__
    #define __MAINFRAME_H__
     
    #include "wx/wx.h"
     
    enum {MENU_NEW,MENU_OPEN,MENU_SAVE,MENU_QUIT,MENU_LINE,MENU_COLOR,MENU_TRIANGLE,MENU_VERSION,MENU_TOOLBAR,TOOLBAR_TOOLS};
     
    class CMainFrame: public wxFrame {
     public:
     
      CMainFrame(const wxString& title, const wxPoint& pos, const wxSize& size);
     
      void CreateMyToolbar(){
        m_toolbar=CreateToolBar(wxNO_BORDER | wxTB_HORIZONTAL,TOOLBAR_TOOLS);
     
        wxBitmap toolBarBitmaps[4];
        toolBarBitmaps[0] = wxBitmap(_("new.bmp"),wxBITMAP_TYPE_BMP);
        toolBarBitmaps[1] = wxBitmap(_("open.bmp"),wxBITMAP_TYPE_BMP);
        toolBarBitmaps[2] = wxBitmap(_("save.bmp"),wxBITMAP_TYPE_BMP);
        toolBarBitmaps[3] = wxBitmap(_("draw.bmp"),wxBITMAP_TYPE_BMP);
        m_toolbar->SetToolBitmapSize(wxSize(toolBarBitmaps[0].GetWidth(),toolBarBitmaps[0].GetHeight()));
     
        m_toolbar->AddTool(MENU_NEW, _("Nouveau"), toolBarBitmaps[0]);
        m_toolbar->AddTool(MENU_OPEN, _("Open"), toolBarBitmaps[1]);
        m_toolbar->AddTool(MENU_SAVE, _("Save"), toolBarBitmaps[2]);
        m_toolbar->AddSeparator();
        m_toolbar->AddCheckTool(MENU_TRIANGLE,_("Draw"),toolBarBitmaps[3]);
     
        m_toolbar->Realize();
        SetToolBar(m_toolbar);
      }
     
     private:
     
      wxToolBar *m_toolbar;
     
      DECLARE_EVENT_TABLE();
     
     
    }; //MyFrame
     
    #endif
    mainframe.cpp :

    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <wx/wx.h>
    #include <wx/accel.h>
     
    #include "mainframe.h"
     
    BEGIN_EVENT_TABLE(CMainFrame, wxFrame)
    END_EVENT_TABLE()
     
     
     
    CMainFrame::CMainFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
    : wxFrame((wxFrame *)NULL, -1, title, pos, size) 
    {
    } //constructor
    dialogs.h :

    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
     
    #ifndef __DIALOGS_H__
    #define __DIALOGS_H__
     
    #include "wx/wx.h"
     
    enum {ID_TEXT};
     
    class VersionDialog : public wxDialog{
     
      public :
     
        VersionDialog(wxWindow *parent, wxWindowID id,const wxString &title);
     
      private :
     
     
     
    DECLARE_EVENT_TABLE()
     
    };
     
    class ThicknessDialog : public wxDialog{
     
     public:
     
      ThicknessDialog(wxWindow *parent, wxWindowID id,const wxString &title);
     
      private :
     
    };
    #endif
    dialogs.cpp :

    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <wx/wx.h>
    #include <wx/accel.h>
     
    #include "dialogs.h"
     
    BEGIN_EVENT_TABLE(VersionDialog, wxDialog)
    END_EVENT_TABLE ()
     
    VersionDialog::VersionDialog( wxWindow *parent, wxWindowID id,const wxString &title) :wxDialog( parent, id, title){
      wxBoxSizer *item0 = new wxBoxSizer( wxVERTICAL );
      wxStaticText *item1 = new wxStaticText( this, ID_TEXT, _("Version 1.0"),wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE );
      wxButton *item2 = new wxButton( this, wxID_OK, _("OK"),wxDefaultPosition);
      item0->Add( item1, 0, wxALIGN_CENTRE|wxALL, 5 );
      item0->Add( item2, 0, wxALIGN_CENTRE|wxALL, 5 );
      this->SetAutoLayout( TRUE );
      this->SetSizer( item0 );
      item0->Fit( this );
      item0->SetSizeHints( this );
    }
     
    ThicknessDialog::ThicknessDialog(wxWindow *parent, wxWindowID id,const wxString &title) :wxDialog( parent, id, title){
     
    }
    main.cpp :

    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
     
     
    #include "wx/wx.h" 
    #include "mainframe.h"
    #include "dialogs.h"
     
    class MyApp: public wxApp 
    {
    	virtual bool OnInit();
    	CMainFrame *m_MainFrame;
    };
     
     
    IMPLEMENT_APP(MyApp)
     
     
    bool MyApp::OnInit() 
    {
    	m_MainFrame = new CMainFrame( _("Fenetre"), wxPoint(50,50), wxSize(450,340) );
    	wxMenuBar *menu_bar = new wxMenuBar;
     
    	wxMenu *file_menu_fichier = new wxMenu;
    	wxMenu *file_menu_affichage = new wxMenu;
    	wxMenu *file_menu_option = new wxMenu;
    	wxMenu *file_menu_aide = new wxMenu;
     
    	menu_bar->Append(file_menu_fichier,_("Fichier"));
    	menu_bar->Append(file_menu_affichage,_("Affichage"));
    	menu_bar->Append(file_menu_option,_("Options"));
    	menu_bar->Append(file_menu_aide,_("Aide"));
     
    	file_menu_fichier->Append(MENU_NEW,_("New\tCtrl-N"));
    	file_menu_fichier->AppendSeparator();
    	file_menu_fichier->Append(MENU_OPEN,_("Open\tCtrl-O"));
    	file_menu_fichier->Append(MENU_SAVE,_("Save\tCtrl-S"));
    	file_menu_fichier->AppendSeparator();
    	file_menu_fichier->Append(MENU_QUIT,_("Quit\tCtrl-Q"));
     
    	file_menu_affichage->AppendCheckItem(MENU_TOOLBAR,_("Boite Outil\tCtrl-B"));
     
    	file_menu_option->Append(MENU_LINE,_("Line\tCtrl-L"));
    	file_menu_option->Append(MENU_COLOR,_("Color\tCtrl-R"));
    	file_menu_option->Append(MENU_TRIANGLE,_("Triangle\tCtrl-T"));
     
    	file_menu_aide->Append(MENU_VERSION,_("Version"));
     
    	menu_bar->Enable(MENU_TRIANGLE,false);
    	file_menu_affichage->Check(MENU_TOOLBAR,TRUE);
    	m_MainFrame->SetMenuBar(menu_bar);
    	m_MainFrame->CreateMyToolbar();
    	m_MainFrame->Show(TRUE);
     
    	return TRUE;
    }
    Voilà voilà.

  2. #2
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    Pourquoi ne crée tu pas la toolbar dans le constructeur de ta classe CMainWindow, puisque de toute manière tu va l'utiliser, il en va de même pour les menus.

  3. #3
    Membre éclairé Avatar de AuraHxC
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 652
    Par défaut
    En fait, c'est un sujet de mon premier TP de IHM. Et mon code est exactement structuré comme il le demande tout au long du sujet de TP. Après peut être que c'est pas une bonne méthode

    Je vais essayer de le recoder d'une autre façon, enfin comme tu me le conseil.

  4. #4
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    En fait ton problème viens paut-être de là. Je m'explique.

    Ton erreur fait référence à une toolbar qui n'est pas attachée. Le fait que tu ne l'as crée pas dans le constructeur peut faire que tu as une toolbar qui est peut-être dans un état assez bizarre.

    Autre chose, c'est plus logique de construire les menus (et tout le contenu de la fenêtre) dans le constructeur. Car pour moi, une fois que tu as crée ta fenêtre, elle doit être finie, ça n'est pas à l'utilisateur (dans le sens utilisateur de la classe) de la remplir.

    Le problème vient peut-être aussi de là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    m_toolbar->Realize();
    SetToolBar(m_toolbar);
    J'inverserai ces deux commandes parce que j'ai peur que la première nécessite que la toolbar soit attachée à une fenêtre pour s'éxécuter correctement.

  5. #5
    Membre éclairé Avatar de AuraHxC
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 652
    Par défaut
    Je viens d'inverser ces deux commandes mais ca ne règle pas mon soucis donc je vais tenter de recoder tout ca histoire de voir si ca règle mon soucis.

  6. #6
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    Essaie d'isoler le problème (le widget, la partie de code qui pose souci). Ensuite, c'est peut-être un bug avec ta version de wx-widgets. Quelle version utilises tu ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/11/2012, 09h03
  2. Problème affichage Excel Application.Height/Application.Width
    Par Paloma dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 08/01/2007, 08h15
  3. [C] Problèmes affichage application console
    Par Arnaud Giuliani dans le forum MFC
    Réponses: 3
    Dernier message: 19/10/2005, 09h28
  4. [DOS] Problème affichage de DOS dans un Memo
    Par Pedro dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 25/06/2004, 13h31

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