Question

Je suis en train d'ajouter une image à un button..I existant ont fait que dans une certaine mesure, le problème est que je peux ajouter une image ownerdrawn mais ne suis pas en mesure d'ajouter l'image extact que je veux .. pour l'exemple voir le code ci-dessous

CButton* pBtn= (CButton*)GetDlgItem(ID_WIZBACK);

   pBtn->ModifyStyle( 0, BS_ICON );

   HICON hIcn= (HICON)LoadImage(
        AfxGetApp()->m_hInstance,
  MAKEINTRESOURCE(IDI_ICON3),
        IMAGE_ICON,
        0,0, // use actual size
        LR_DEFAULTCOLOR
    );

    pBtn->SetIcon( hIcn );

avec le code ci-dessus l'image bitmap am convertir à une icône pour ajouter à mon bouton ... Comment puis-je ajouter l'image exacte Bitmap directement à un existant button.Please me aider frnds ..

Était-ce utile?

La solution

En fait, je fixai la problem..what je l'ai fait est que je remplacé le HICON avec HBITMAP et son parfait état ... essentiellement deux fonctionnerait très bien, mais dans mon cas lorsque je charge l'icône dans le bouton l'arrière-plan de l'icône était ne change pas ... J'ai essayé Bitmap il fonctionne très bien. Maintenant, je travaille sur le positionnement de l'image et d'ajouter du texte ... pense que je pourrais passer par

Autres conseils

Procédure d'attribution de bitmap à bouton dans mfc:

  1. Créer un objet de bitmap
  2. bitmap de charge à l'aide de LoadBitmap ()
  3. Obtenir poignée de bouton en utilisant id et GetDlgItem () méthode
  4. Modifier le style afin que nous puissions attribuer bitmap à elle
  5. utilisation SetBitmap () sur la poignée de bouton pour assigner bitmap

Code:

CBitmap bmp;

bmp.LoadBitmap( IDB_BITMAP4 );

CButton* pButton = (CButton* )GetDlgItem(IDC_BUTTON1);

pButton->ModifyStyle(0,BS_BITMAP);

pButton->SetBitmap(bmp);

Vous pouvez sous-classe bouton existant à l'aide CBitmapButton::SubclassWindow, utilisez LoadBitmaps.

vous ne savez pas combien cela aidé. Merci d'avoir posté. aussi changer quelques autres choses bitmap et ...

CButton* pBtn= (CButton*)GetDlgItem(ID_MYDIALOG);
pBtn->ModifyStyle( 0, BS_BITMAP );

HBITMAP hIcn= (HBITMAP)LoadImage(
  AfxGetApp()->m_hInstance,
  MAKEINTRESOURCE(IDB_MYPIC),
  IMAGE_BITMAP,
  0,0, // use actual size
  LR_DEFAULTCOLOR
  );

pBtn->SetBitmap( hIcn );

Utilisez les classes bouton du Feature Pack. Ils ont l'appui pour montrer à la fois du texte et des images sur les boutons, le bouton régulier ne peut pas le faire. Regardez le répertoire « échantillons » dans votre répertoire d'installation VS.

Je veux ajouter quelques idées pour la réponse de @Amruta Ghodke:

Vous pouvez redimensionner votre bouton en utilisant les fonctions de GetWindowRect et SetWindowPos. Voir un exemple ci-dessous:

CRect rc;

pButton->GetWindowRect(rc);
pButton->SetWindowPos(NULL, rc.left, rc.top, myWidth, myHeight, SWP_NOSENDCHANGING | SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOMOVE);

Si vous souhaitez afficher des images transparentes, utilisez le logiciel Pixelformer pour convertir votre PNGs à Alpha-PGO activé. Vous devrez:

  1. Aller à image-> Propriétés et RGB color with alpha channel set
  2. Exporter le fichier en utilisant le format A8:R8:G8:B8 et Premultiplied alpha désactivé et Top-down row order
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top