Afficher un bitmap sur un bouton

Afficher un bitmap sur un bouton - C++ - Programmation

Marsh Posté le 09-08-2003 à 17:15:54    

Voilà, j'utilise VC++ et je voudrais afficher une ressource BITMAP sur une ressource BOUTON sans utiliser (si c'est possible) les MFC. Comment je dois faire, svp? Merci beaucoup :jap:

Reply

Marsh Posté le 09-08-2003 à 17:15:54   

Reply

Marsh Posté le 09-08-2003 à 17:23:09    

tant qu'à faire, comment on met un info-bulle sur un bouton?

Reply

Marsh Posté le 09-08-2003 à 17:39:34    

jvais ptet dire nimporte quoi mais si tu recupere le handle du bouton et que tu fait un bitblt dessus ?????????

Reply

Marsh Posté le 09-08-2003 à 17:47:39    

red faction a écrit :

jvais ptet dire nimporte quoi mais si tu recupere le handle du bouton et que tu fait un bitblt dessus ?????????


 
j'y ai pensé, mais je me demandais si y'avais pas plus direct. D'autre part, comment on fais pour récupéré le handle d'une ressource BOUTON?... Je suis des fois un peu boulet...

Reply

Marsh Posté le 09-08-2003 à 18:29:50    

red faction a écrit :

jvais ptet dire nimporte quoi mais si tu recupere le handle du bouton et que tu fait un bitblt dessus ?????????


 
je viens d'essayer, ça marche pas terrible. l'image s'efface dès qu'un objet passe par-dessus...

Reply

Marsh Posté le 09-08-2003 à 19:00:43    

normal faut faire le message WM_PAINT sinon jamais reaffiche

Reply

Marsh Posté le 09-08-2003 à 20:36:23    

sinon, on peut aussi ajouter le style ownderdraw au bouton, attraper le msg WM_OWNERDRAW et mettre un code du genre :
 

Code :
  1. LPDRAWITEMSTRUCT lpdis = (LPDRAWITEMSTRUCT)lParam;
  2. HDC hdcMem = CreateCompatibleDC(lpdis->hDC);
  3. SelectObject(hdcMem, gl_hBit);
  4. BitBlt(lpdis->hDC,
  5. lpdis->rcItem.left,
  6. lpdis->rcItem.top,
  7. lpdis->rcItem.right - lpdis->rcItem.left,
  8. lpdis->rcItem.bottom - lpdis->rcItem.top,
  9. hdcMem,
  10. 0, 0,
  11. SRCCOPY);
  12. DeleteDC(hdcMem);

Reply

Marsh Posté le 10-08-2003 à 10:48:34    

sérieux, rien de plus simple??? en Delphi, y'a juste à associer une icône ou un bmp à un bouton via l'inspecteur d'objets et c'est fini. MS en est à sa version 6 de VC++; vous allez pas me dire qu'iuls ont pas été foutus de faire un truc du même genre dans l'éditeur de ressources??? :??:
 
Si c'est pas le cas, M$ est vraiment un boulet :gun:

Reply

Marsh Posté le 10-08-2003 à 10:59:45    

rufo a écrit :

sérieux, rien de plus simple??? en Delphi, y'a juste à associer une icône ou un bmp à un bouton via l'inspecteur d'objets et c'est fini. MS en est à sa version 6 de VC++; vous allez pas me dire qu'iuls ont pas été foutus de faire un truc du même genre dans l'éditeur de ressources??? :??:
 
Si c'est pas le cas, M$ est vraiment un boulet :gun:


 
ben MFC...

Reply

Marsh Posté le 10-08-2003 à 11:51:13    

rufo a écrit :

sérieux, rien de plus simple??? en Delphi, y'a juste à associer une icône ou un bmp à un bouton via l'inspecteur d'objets et c'est fini. MS en est à sa version 6 de VC++; vous allez pas me dire qu'iuls ont pas été foutus de faire un truc du même genre dans l'éditeur de ressources??? :??:
 
Si c'est pas le cas, M$ est vraiment un boulet :gun:


 
ben tu sais c qd mieux de faire comme ca que utiliser vb ou delphi qui utilisent leur propre librairies avec on ne sait quoi dedans

Reply

Marsh Posté le 10-08-2003 à 11:51:13   

Reply

Marsh Posté le 10-08-2003 à 12:15:39    

Question en aparté:
 
Est-ce que les "->" dans c++ correspondent a celles du C (accès aux données d'une structure à partir d'un pointeur) ?
 
 

Reply

Marsh Posté le 10-08-2003 à 15:15:51    

kfman a écrit :

Question en aparté:
 
Est-ce que les "->" dans c++ correspondent a celles du C (accès aux données d'une structure à partir d'un pointeur) ?

oui, ça marche pour les structures et les objets, s'ils ne sont pas private.
 
sinon, pour les bouton :
 
dans l'éditeur, mettre le style "Bitmap"
et il y a ensuite dans le code qui gère la boite à envoyer au bouton un message "BM_SETIMAGE" ou un truc du genre, je le fait souvent et je sais que ça prend 2 lignes :
 
- charger la resource bitmap avec "LoadBitmap"
- et faire un SendDlgItemMessage(hDlg, IDC_MONBOUTON, BM_SETIMAGE, IMAGE_BITMAP, hBitmap)


Message édité par jesus_christ le 10-08-2003 à 15:16:39

---------------
Envie de backuper un DVD en DivX mais vous y connaissez rien ? essayez dvd-ripp : le site de Maxime
Reply

Marsh Posté le 11-08-2003 à 10:38:17    

jesus_christ a écrit :

oui, ça marche pour les structures et les objets, s'ils ne sont pas private.
 
sinon, pour les bouton :
 
dans l'éditeur, mettre le style "Bitmap"
et il y a ensuite dans le code qui gère la boite à envoyer au bouton un message "BM_SETIMAGE" ou un truc du genre, je le fait souvent et je sais que ça prend 2 lignes :
 
- charger la resource bitmap avec "LoadBitmap"
- et faire un SendDlgItemMessage(hDlg, IDC_MONBOUTON, BM_SETIMAGE, IMAGE_BITMAP, hBitmap)


 
Merci beaucoup, je te remercie. C'était effectivement à ce genre de procédé que j'avais dans l'idée. :)

Reply

Marsh Posté le 11-08-2003 à 10:41:22    

Procédé qui n'a rien à voir avec Visual C++ au passage ...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 12-08-2003 à 09:06:37    

jesus_christ a écrit :

oui, ça marche pour les structures et les objets, s'ils ne sont pas private.
 
sinon, pour les bouton :
 
dans l'éditeur, mettre le style "Bitmap"
et il y a ensuite dans le code qui gère la boite à envoyer au bouton un message "BM_SETIMAGE" ou un truc du genre, je le fait souvent et je sais que ça prend 2 lignes :
 
- charger la resource bitmap avec "LoadBitmap"
- et faire un SendDlgItemMessage(hDlg, IDC_MONBOUTON, BM_SETIMAGE, IMAGE_BITMAP, hBitmap)


 
snif : ça marche pas :( hbitmap, c'est bien le handle qui est renvoyé par LoadBitmap?
 
Par contre, est-ce-que je dois rajouter du code dans ma fonction chargée de traiter les msg Windows?

Reply

Marsh Posté le 12-08-2003 à 10:17:18    

red faction a écrit :


 
ben tu sais c qd mieux de faire comme ca que utiliser vb ou delphi qui utilisent leur propre librairies avec on ne sait quoi dedans  


 
tu codes toujours tout à la main, tu n'utilises jamais de librairies toute faites ? (MFC, STL, ...) :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-08-2003 à 10:22:09    

Tu as créé ton bouton avec le style BS_BITMAP ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 12-08-2003 à 10:43:52    

antp a écrit :


 
tu codes toujours tout à la main, tu n'utilises jamais de librairies toute faites ? (MFC, STL, ...) :D


 
non evidement, souvent le temps de devellopement est tres court et la t bien content davoir les librairies ...
 
 
quoi que un ptit push 0 push 0412452 push 0412544 call _msgbox jaime encore bien   :whistle:


Message édité par red faction le 12-08-2003 à 11:59:37
Reply

Marsh Posté le 12-08-2003 à 13:36:03    

HelloWorld a écrit :

Tu as créé ton bouton avec le style BS_BITMAP ?


 
mon bouton, je l'ai créé avec l'éditeur de ressources et je l'ai mis à "ownerdraw" et "bitmap"...
 
par rapport aux MFC, vu que j'ai pas mal avancé sans utilisé les MFC, j'aimerais autant continuer sans...

Reply

Marsh Posté le 14-08-2003 à 18:48:27    

rufo a écrit :


 
mon bouton, je l'ai créé avec l'éditeur de ressources et je l'ai mis à "ownerdraw" et "bitmap"...
 
par rapport aux MFC, vu que j'ai pas mal avancé sans utilisé les MFC, j'aimerais autant continuer sans...

"ownerdraw" et "bitmap" c'est différent, pour une image dessus, bitmap, pour redessiner tout le bouton, même les bord, ownerdrawn.
 
je sais même pas si c'est compatible...


---------------
Envie de backuper un DVD en DivX mais vous y connaissez rien ? essayez dvd-ripp : le site de Maxime
Reply

Marsh Posté le 14-08-2003 à 18:49:54    

rufo a écrit :


 
snif : ça marche pas :( hbitmap, c'est bien le handle qui est renvoyé par LoadBitmap?
 
Par contre, est-ce-que je dois rajouter du code dans ma fonction chargée de traiter les msg Windows?

oui, hBitmap c'est le handle.
je crois que mes 2 lignes de codes suffisent, dans le WM_INITDIALOG, et le DeleteObject dans le WM_DESTROY pour libérer le handle.
essaye sans le ownerdrawn


---------------
Envie de backuper un DVD en DivX mais vous y connaissez rien ? essayez dvd-ripp : le site de Maxime
Reply

Marsh Posté le 15-08-2003 à 09:58:17    

jesus_christ a écrit :

oui, hBitmap c'est le handle.
je crois que mes 2 lignes de codes suffisent, dans le WM_INITDIALOG, et le DeleteObject dans le WM_DESTROY pour libérer le handle.
essaye sans le ownerdrawn


 
ok, merci, je vais réessayer. Moi, je mettais les 2 (ownerdraw et bitmap, parce que si j'enlevais bitmap, l'icône s'effaçait quand un autre objet passait dessus). Par contre, je mettais pas mon code dans WM_INITDIALOG.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed