2017-07-26 1 views
0

J'ai une barre d'outils qui utilise des images bitmap. Im en utilisant les bitmaps génériques du fichier d'exemple, et ils fonctionnent parfaitement bien.Utilisation de bitmaps à partir du fichier de ressources

Cependant quand j'essaye d'ajouter une nouvelle icône de bitmap pour cette instance son close.bmp (il est également correctement dimensionné 16x15 px comme toutes les autres icônes) mon programme me donne des erreurs.

J'ai juste besoin de savoir comment utiliser bitmaps à partir d'un fichier de ressources

erreurs

../../src/msw/toolbar.cpp(799): assert "Assert Failure" failed in 
Realize():invalid tool button bitmap 

Cant load bitmap 'close' from resources! Check.rc file. 

ressources .rc

new BITMAP "bitmaps/new.bmp" 
open BITMAP "bitmaps/open.bmp" 
save BITMAP "bitmaps/save.bmp" 
help BITMAP "bitmaps/help.bmp" 
close BITMAP "bitmaps/close.bmp" 

Cpp

{ 
    // Set up toolbar 
    enum 
    { 
     Tool_new, 
     Tool_open, 
     Tool_save, 
     Tool_help, 
     Tool_close, 
     Tool_Max 
    }; 

    wxBitmap toolBarBitmaps[Tool_Max]; 

#if USE_XPM_BITMAPS 
    #define INIT_TOOL_BMP(bmp) \ 
     toolBarBitmaps[Tool_##bmp] = wxBitmap(bmp##_xpm) 
#else // !USE_XPM_BITMAPS 
    #define INIT_TOOL_BMP(bmp) \ 
     toolBarBitmaps[Tool_##bmp] = wxBITMAP(bmp) 
#endif // USE_XPM_BITMAPS/!USE_XPM_BITMAPS 



    INIT_TOOL_BMP(new); 
    INIT_TOOL_BMP(open); 
    INIT_TOOL_BMP(save); 
    INIT_TOOL_BMP(help); 
    INIT_TOOL_BMP(close); 

    toolBar->AddTool(wxID_ANY, wxT("New"), toolBarBitmaps[Tool_new], wxNullBitmap, wxITEM_NORMAL, wxT("New IWEX Project")); 
    toolBar->AddTool(wxID_ANY, wxT("Open"), toolBarBitmaps[Tool_open], wxNullBitmap,wxITEM_NORMAL , wxT("Open IWEX Project")); 
    toolBar->AddTool(idFileClose, wxT("Close"), toolBarBitmaps[Tool_close], wxT("Close button"), wxITEM_NORMAL); 

    toolBar->Realize(); 

} 
+0

Bizarre. Quelle version de wxWidgets? Pour savoir si le coupable est le bitmap, copiez un bitmap actif (par exemple "new.bmp") et renommez-le ("close.bmp"). – Ripi2

+0

@MaazAzeem, avez-vous appelé InitAllImageHandlers()? – Igor

Répondre

0

Je a été en mesure de résoudre le problème. Le code ne semble pas être un problème. C'est le format de fichier bitmap. Je ne sais pas exactement pourquoi cela fait une différence, mais je suis en train de modifier les tailles de photos de GIMP, et j'aurais des problèmes. Les mêmes images si je redimensionne en utilisant FastStone visionneuse d'images, il semble fonctionner correctement.