begin process at 2012 02 13 01:13:34
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > UNE CLASSE BOUTON BITMAP POUR C++/MFC (TRÈS SIMPLE À UTILISER)

UNE CLASSE BOUTON BITMAP POUR C++/MFC (TRÈS SIMPLE À UTILISER)


 Information sur la source

Note :
Aucune note
Catégorie :Graphique Classé sous :bouton, bitmap, mfc, classe, controle Niveau :Débutant Date de création :06/08/2006 Date de mise à jour :06/08/2006 15:31:16 Vu / téléchargé :9 045 / 925

Auteur : yann_lo_san

Ecrire un message privé
Site perso
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Personnaliser simplement les boutons en c++. Une fois la classe intégré à votre projet, vous pourrez gérer la couleur du libellé, l'image et son étendu sur le bouton, un vrai texte à coté de l'image, le grisé, l'effet mouseMove et le redimentionnement automatique de l'image selon la taille du bouton.
Sans oublier le masque pour la transparence.
Un exemple complet et commenté, avec tous les cas de figure dans le zip.

Source

  • // Utilisation
  • // declare
  • CBtnBitmap* m_pBtn;
  • // alloue
  • m_pBtn = new CBtnBitmap(IDB_NORMAL, _T("texte !"), RGB(0,0,255));
  • // par défaut le taux de remplissage est un tier, on peut le changer
  • m_pBtn->SetTauxRemplissageImg(REMPLIR_MOITIE)
  • // On peut gérer le grisé ou non
  • m_pBtn->SetIDBitmapGris(IDB_GRISE);
  • // On peut gérer le mouseMove ou non
  • m_pBtn->SetIDBitmapMouseMove(IDB_MOUSEMOVE);
  • // On peut gérer le masque de transparence
  • m_pBtn->SetIDBitmapMasque(IDB_MASQUE);
  • // On peut gérer le redimentionnement automatique
  • m_pBtn->SetStretch(true);
  • // On peut changer la couleur à l'exécution
  • m_pBtn->SetCouleurTexte(RGB(255,0,0));
  • // pour texte et pour grisé à l'exécution (fn windows)
  • m_pBtn->SetWindowText((LPCTSTR));
  • m_pBtn->EnableWindow(FALSE);
  • // dans l'init du dialog parent ou le template est posé
  • // il faut sousclasser le bouton
  • m_pBtn->SubClassDlgItem(IDC_BTN, this);
  • // Ne pas oublier de désallouer le btn (delete)
// Utilisation
// declare
CBtnBitmap* m_pBtn;
// alloue
m_pBtn = new CBtnBitmap(IDB_NORMAL, _T("texte !"), RGB(0,0,255));
// par défaut le taux de remplissage est un tier, on peut le changer
m_pBtn->SetTauxRemplissageImg(REMPLIR_MOITIE)
// On peut gérer le grisé ou non
m_pBtn->SetIDBitmapGris(IDB_GRISE);
// On peut gérer le mouseMove ou non
m_pBtn->SetIDBitmapMouseMove(IDB_MOUSEMOVE);
// On peut gérer le masque de transparence
m_pBtn->SetIDBitmapMasque(IDB_MASQUE);
// On peut gérer le redimentionnement automatique
m_pBtn->SetStretch(true);
// On peut changer la couleur à l'exécution
m_pBtn->SetCouleurTexte(RGB(255,0,0));
// pour texte et pour grisé à l'exécution (fn windows)
m_pBtn->SetWindowText((LPCTSTR));
m_pBtn->EnableWindow(FALSE);

// dans l'init du dialog parent ou le template est posé
// il faut sousclasser le bouton
m_pBtn->SubClassDlgItem(IDC_BTN, this);

// Ne pas oublier de désallouer le btn (delete)

 Conclusion

Pour les débutants qui viennent du VisualBasic, cette classe fera retrouver la simplicité que l'on doit avoir pour agrémenter un gui sans passer par la reflection ou les messages obscurs comme MEASUREITEM, DRAWITEM, ERASEBKG ect...

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

06 août 2006 15:31:16 :
Suite au commentaire, Ajout de l'exe (.ex_) pour ceux qui ne peuvent pas compiler.

 Sources du même auteur

Source avec Zip Source avec une capture [C++/WIN32] RECHERCHE DE FUITES DE MEMOIRE
Source avec Zip Source avec une capture PIECHART SUR DIALOG SANS RESSOURCE
Source avec Zip Source avec une capture [C++/WIN32] TYPEDEF_VIEWER (CONTROLES ETENDUS)
Source avec Zip EFFET GRAPHIQUE DIRECTDRAW
Source avec Zip Source avec une capture [C++/WIN32] COMPRESSEUR/DECOMPRESSEUR LZW

 Sources de la même categorie

Source avec Zip APPLICATION DE DESSIN DE QUELQUES FIGURES par laguchori
Source avec Zip Source avec une capture HDR EXPOSURE FUSION par mecrosoft
Source avec Zip Source avec une capture IRC CLIENT MULTISERVEUR EN MFC (TXIRC) par TeniX
Source avec Zip ENTETE DU FICHIER BMP (BIPMAP) par k.Lutchi
Source avec Zip Source avec une capture XCOUPE : COUPE 2D par pop70

 Sources en rapport avec celle ci

Source avec une capture [C]BOUTON EN SDL par smartties
Source avec Zip TIM_RESEAU, CLASSES POUR RESEAU COMPLET par williamallas
Source avec Zip HEAPCOLLECTOR par troctsch
Source avec Zip Source avec une capture [C++/WIN32] TYPEDEF_VIEWER (CONTROLES ETENDUS) par yann_lo_san
C/C++ SOUS WINDOWS TUTORIAL 3 : CREATION ET AFFICHAGE DE CON... par LaPatoshe

Commentaires et avis

Commentaire de MuPuF le 06/08/2006 11:32:30

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.

Commentaire de MuPuF le 06/08/2006 11:38:54

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.

Commentaire de yann_lo_san le 06/08/2006 15:57:15

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...
}

Commentaire de MuPuF le 06/08/2006 22:04:53

merci beaucoup, c'est noté

Commentaire de randriano le 18/08/2007 16:36:34

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

Commentaire de yann_lo_san le 31/08/2007 21:48:32

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...

Commentaire de randriano le 02/09/2007 14:29:19

Salut !

Mon code est correct ?
Je vais essayer avec une image de 32 bits et je confirmerai si ça marche !
OK !

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Mettre une bitmap sur un bouton (MFC,VC++) [ par JMGR ] Comment peut - on mettre une image sur un bouton ?Mon code qui ne fonctionne pas :HBITMAP bimp= LoadBitmap(NULL,"bitmaps\\un.bmp");m_x0y0.SetBitmap(bi Boite de dialogue MFC [ par julok2 ] Salut,j'écris actuellement un programme dans lequel j'ouvre des boites de dialogue. J'ai donc créé des fonctions OnBouton dans une autre classe où j'u Pb avec CBitmapButton [ par punx120 ] Salutj'ai un problème avec CBitmapButton, je veux créer un bouton avec un bitmap je fais comme ceci mais ça ne marhce pas (j'ai visual c++ 6.0): dans Utiliser la classe MFC CHtmlEditCtrl [ par appstmd ] Salut !Quelqu'un sait-il comment on fait pour spécifier le contenu d'un contrôle CHtmlEditCtrl sans passer par une adresse Internet ou un fichier HTML Imprimer un bitmap sans MFC ( API Win32 ) [ par bebel6 ] Bonjour à tous tout d'abord !Alors voila le bin'z :J'aimerais pouvoir imprimer une image avec vsiualc 6 sans l'aide des MFC, j'arrive deja à imprimer Insérer bitmap dans un bouton dans une boite de dialogue [ par safira ] safira:)Salut! Je suis nouvelle dans ce forum! J'aimerais savoir comment mettre un bitmap dans bouton qui se trouve dans une boite de dialogue avec MF controle du volume audio général [ par roxanic ] BonjourJe cherche a controler les bouton de volume.Pour le bouton Wave c'est OK. Mais je ne trouve pas le solution pour le curseur du volume général.M MFC : bitmap [ par lavionneur ] Bonjour a tous , je suis nouveau sur ce forum.je suis en projet de fin d'année et je voudrais savoir comment on fait pour :rendre visible ou invisible MFC mettre un controle invisible [ par Cameleon69 ] J'ai un controle ComboBox, que je veux rendre invisible, je sais le rendre inactif mais invisible ???Merci de votre aide. État d'un bouton MFC [ par NiFF ] Bonjour tout le monde.Comment fait-on pour changer l'état d'un bouton? J'ai créé sur ma feuille MFC un bouton avec la propriété "Disabled". Comment fa


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales