wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

Membres en ligne : 0
Invités en ligne : 1

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» Les icones dans les menus disparaissent sous Windows
Conversation (Résolue) : Les icones dans les menus disparaissent sous Windows
03-01-2010 00:07:27  Les icones dans les menus disparaissent sous Windows #1
congelli501 (Membre)
Inscrit le : 08-06-2008
Messages: 46
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
Bonjour, et bonne année 2010 ;) !
Comme vous vous en doutez, j'ai un problème avec wxWidgets : sous Windows (ce problème n'apparait pas avec wxGTK), lorsque je change le label d'un wxMenuItem, l'icône qui lui est associé disparait... et impossible d'en remettre un.

Voici un petit code d'exemple (minimal) :
App.hpp :

Code Cpp:

//------------------------------------------------------------------------------
#include "wx/wxprec.h"
 
#ifdef __BORLANDC__
    #pragma hdrstop
#endif
 
#ifndef WX_PRECOMP
    #include "wx/wx.h"
#endif
//------------------------------------------------------------------------------
#include "MainFrame.hpp"
//------------------------------------------------------------------------------
 
#if not defined APP_HPP_AUTO_SAVE
#define APP_HPP_AUTO_SAVE
 
class App : public wxApp
{
public:
    virtual bool OnInit();
 
private:
    MainFrame *m_frame;
};
//------------------------------------------------------------------------------
 
#endif //APP_HPP_AUTO_SAVE
 


App.cpp :

Code Cpp:

//------------------------------------------------------------------------------
#include "App.hpp"
//------------------------------------------------------------------------------
IMPLEMENT_APP(App)
//------------------------------------------------------------------------------
bool App::OnInit()
{
    m_frame = new MainFrame(_T("test"),  wxDefaultPosition, wxSize(300, 300));
    m_frame->Show(true);
 
    return true;
}
//------------------------------------------------------------------------------
 


MainFrame.hpp :

Code Cpp:

//------------------------------------------------------------------------------
#if not defined MAIN_FRAME_HPP_AUTO_SAVE
#define MAIN_FRAME_HPP_AUTO_SAVE
 
//------------------------------------------------------------------------------
#include "wx/wxprec.h"
 
#ifdef __BORLANDC__
    #pragma hdrstop
#endif
 
#ifndef WX_PRECOMP
    #include "wx/wx.h"
#endif
//------------------------------------------------------------------------------
 
class MainFrame : public wxFrame
{
public:
    MainFrame(const wxString& title, const wxPoint& pos, const wxSize& size, long style = wxDEFAULT_FRAME_STYLE);
    void OnQuit(wxCommandEvent& event);
    void OnBtUpdate(wxCommandEvent& event);
 
protected:
    wxMenuItem *m_MenuItem;
 
    wxMenuBar *m_MenuBar;
};
 
#endif //MAIN_FRAME_HPP_AUTO_SAVE
 


MainFrame.cpp :

Code Cpp:

//------------------------------------------------------------------------------
#include "MainFrame.hpp"
//------------------------------------------------------------------------------
/* XPM */
static char * ok_xpm[] = {
"16 16 3 1",
"     c #000000",
".    c #FFFF00",
"+    c #FF0000",
"         .......",
"        ........",
"  ++   .........",
"    ++...+++....",
"     +...+..+.. ",
"    ..+..+..+.  ",
"   ...+...+.+   ",
"  ....++++..+   ",
" .......... +   ",
"..........  +   ",
".....++++++++   ",
"........        ",
".......         ",
"......          ",
".....          .",
"....          .."};
//------------------------------------------------------------------------------
MainFrame::MainFrame(const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxFrame(NULL, -1, title, pos, size, style)
{
        // File menu
    wxMenu *FileMenu = new wxMenu;
    m_MenuItem = new wxMenuItem(FileMenu, wxID_ANY, _T("Test"));
    m_MenuItem->SetBitmap(wxBitmap(ok_xpm));
    FileMenu->Append(m_MenuItem);
 
        // Menubar
    m_MenuBar = new wxMenuBar();
    m_MenuBar->Append(FileMenu,_("&File"));
 
    SetMenuBar(m_MenuBar);
 
    // Events
    Connect( m_MenuItem->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MainFrame::OnBtUpdate));
}
//------------------------------------------------------------------------------
void MainFrame::OnBtUpdate(wxCommandEvent& event)
{
    m_MenuItem->SetItemLabel(_T("Coucou"));
}
//------------------------------------------------------------------------------
 


Avez vous un solution à ce problème ?

Dernière modification par congelli501 (03-01-2010 00:07:53)


Mes programmes open sources !
On dit que la Grèce antique beaucoup d'influence sur notre culture... C'est vrai : la chute d'Athènes a eu lieu en 404 avant JC. Ca vous rappelle quelque chose ?
04-01-2010 13:26:39  Re: Les icones dans les menus disparaissent sous Windows #2
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1383
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Salut, et bonne année !

C'est effectivement un comportement bizarre que je confirme (je n'ai pas fait le test sous wxGTK : uniquement sous Windows).

La seule solution est à mon avis de recréer un autre wxMenuItem, afin de le remplacer.

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà...
04-01-2010 19:26:14  Re: Les icones dans les menus disparaissent sous Windows #3
congelli501 (Membre)
Inscrit le : 08-06-2008
Messages: 46
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
Ok,
Merci de ta réponse.
J'ai ajouté ce bug dans le bug tracker de wxWidgets :
http:/trac.wxwidgets.org/ticket/11595
----------
Pour info, le bug est résolu dans le SVN, donc ça devrait être ok pour wxWidgets 3.0.

Dernière modification par congelli501 (20-05-2010 20:20:52)


Mes programmes open sources !
On dit que la Grèce antique beaucoup d'influence sur notre culture... C'est vrai : la chute d'Athènes a eu lieu en 404 avant JC. Ca vous rappelle quelque chose ?
Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» Les icones dans les menus disparaissent sous Windows