UNE CLASSE BOUTON BITMAP POUR C++/MFC (TRÈS SIMPLE À UTILISER)
MuPuF
Messages postés536Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention22 août 2008
-
6 août 2006 à 11:32
randriano
Messages postés54Date d'inscriptionvendredi 13 avril 2007StatutMembreDernière intervention26 juillet 2011
-
2 sept. 2007 à 14:29
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
randriano
Messages postés54Date d'inscriptionvendredi 13 avril 2007StatutMembreDernière intervention26 juillet 2011 2 sept. 2007 à 14:29
Salut !
Mon code est correct ?
Je vais essayer avec une image de 32 bits et je confirmerai si ça marche !
OK !
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 31 août 2007 à 21:48
Salut,
Il est possible que ton ID de ressource ne soit pas bon ou pas pris en compte comme il faut.
OU alors tu utilises des images 8 bits ou 16 bits, dans ce cas, essayes avec une image 32 bits.
A plus...
randriano
Messages postés54Date d'inscriptionvendredi 13 avril 2007StatutMembreDernière intervention26 juillet 2011 18 août 2007 à 16:36
Votre programme est génial, ça marche mais pour utiliser la classe CBtnBitmap dans un nouveau projet, j'ai fait comme suit:
Ajouter un attribut de type CBtnBitmap * dans la classe dialogue => m_pBtnFermer
Dans le constructeur
m_pBtnFermer = new CBtnBitmap(IDB_AKATONY, _T("OnOK()"));
m_pBtnFermer->SetStretch(true);
Dans OnInitDialog, une sorte de main() en MFC:
m_pBtnFermer->SubclassDlgItem(ID_AKATONY, this);
Avec ID_AKATONY l'ID d'un bouton existant à surcharger une image
Dans le destructeur du dialogue
if( m_pBtnFermer ) delete m_pBtnFermer;
Et ben, aucun changement sur mon bouton à ID = ID_AKATONY
MuPuF
Messages postés536Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention22 août 2008 6 août 2006 à 22:04
merci beaucoup, c'est noté
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 6 août 2006 à 15:57
Pour MuPuf, concernant les menus (toujours en MFC).
// Dans le MainFrame.h
// Les index bitmap (autant que necessaire)
enum eIndexImages { M_NEW = 0, M_OPEN, M_AUTONUMBER };
// Les bitmap
CBitmap m_menuImages[M_AUTONUMBER];
// Dans le MainFrame.cpp, Méthode OnCreate()
// Attache les images aux menus
CMenu* mainMenu = GetMenu();
CMenu* subMenu = NULL;
if( mainMenu )
{
// Référence le menu [fichier] (indice 0)
subMenu = mainMenu->GetSubMenu(0);
if( subMenu )
{
// Menu Nouveau (charge ressource et affecte)
if( m_menuImages[M_NEW].LoadBitmap(IDB_MNU_NEW) )
subMenu->SetMenuItemBitmaps(ID_FILE_NEW,
MF_BYCOMMAND,
&m_menuImages[M_NEW],
NULL);
// Menu Ouvrir (idem)
if( m_menuImages[M_OPEN].LoadBitmap(IDB_MNU_OPEN) )
subMenu->SetMenuItemBitma(ID_FILE_OPEN,
MF_BYCOMMAND,
&m_menuImage[M_OPEN],
NULL);
}
// Passer au menu suivant [affichage] (indice 1)
subMenu = mainMenu->GetSubMenu(1);
// Ect...
}
MuPuF
Messages postés536Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention22 août 2008 6 août 2006 à 11:38
Re
Tu pourrais mettre l'exe (renommé en .ex_) s'il te plait, car il me manque une entente, je ne travaille pas en MFC et j'aimerais voir le résultat.
Sinon, la source est claire et bien commenté, je devrais pouvoir m'en sortir lol, sinon, sachez qu'il existe un super tuto sur msdn.
MuPuF
Messages postés536Date d'inscriptionmercredi 27 avril 2005StatutMembreDernière intervention22 août 2008 6 août 2006 à 11:32
Bonjour cette source m'interesse énormément, je suis en frain de faire une librairie permettant de gerer des skins a partir d'un XML (toutes les infos sur la fenetre sont dans le xml un peu comme pour les dialogues et les ressources). Et justement, il me fallait quelque chose du genre, maintenant il me reste plus qu'a voir comment marche les menus et les boutons owner drawn.
2 sept. 2007 à 14:29
Mon code est correct ?
Je vais essayer avec une image de 32 bits et je confirmerai si ça marche !
OK !
31 août 2007 à 21:48
Il est possible que ton ID de ressource ne soit pas bon ou pas pris en compte comme il faut.
OU alors tu utilises des images 8 bits ou 16 bits, dans ce cas, essayes avec une image 32 bits.
A plus...
18 août 2007 à 16:36
Ajouter un attribut de type CBtnBitmap * dans la classe dialogue => m_pBtnFermer
Dans le constructeur
m_pBtnFermer = new CBtnBitmap(IDB_AKATONY, _T("OnOK()"));
m_pBtnFermer->SetStretch(true);
Dans OnInitDialog, une sorte de main() en MFC:
m_pBtnFermer->SubclassDlgItem(ID_AKATONY, this);
Avec ID_AKATONY l'ID d'un bouton existant à surcharger une image
Dans le destructeur du dialogue
if( m_pBtnFermer ) delete m_pBtnFermer;
Et ben, aucun changement sur mon bouton à ID = ID_AKATONY
6 août 2006 à 22:04
6 août 2006 à 15:57
// Dans le MainFrame.h
// Les index bitmap (autant que necessaire)
enum eIndexImages { M_NEW = 0, M_OPEN, M_AUTONUMBER };
// Les bitmap
CBitmap m_menuImages[M_AUTONUMBER];
// Dans le MainFrame.cpp, Méthode OnCreate()
// Attache les images aux menus
CMenu* mainMenu = GetMenu();
CMenu* subMenu = NULL;
if( mainMenu )
{
// Référence le menu [fichier] (indice 0)
subMenu = mainMenu->GetSubMenu(0);
if( subMenu )
{
// Menu Nouveau (charge ressource et affecte)
if( m_menuImages[M_NEW].LoadBitmap(IDB_MNU_NEW) )
subMenu->SetMenuItemBitmaps(ID_FILE_NEW,
MF_BYCOMMAND,
&m_menuImages[M_NEW],
NULL);
// Menu Ouvrir (idem)
if( m_menuImages[M_OPEN].LoadBitmap(IDB_MNU_OPEN) )
subMenu->SetMenuItemBitma(ID_FILE_OPEN,
MF_BYCOMMAND,
&m_menuImage[M_OPEN],
NULL);
}
// Passer au menu suivant [affichage] (indice 1)
subMenu = mainMenu->GetSubMenu(1);
// Ect...
}
6 août 2006 à 11:38
Tu pourrais mettre l'exe (renommé en .ex_) s'il te plait, car il me manque une entente, je ne travaille pas en MFC et j'aimerais voir le résultat.
Sinon, la source est claire et bien commenté, je devrais pouvoir m'en sortir lol, sinon, sachez qu'il existe un super tuto sur msdn.
6 août 2006 à 11:32