Image cliquable -> Création d'un Bouton ou d'un Static avec une image

Résolu
cs_paramotdam Messages postés 29 Date d'inscription jeudi 24 mars 2005 Statut Membre Dernière intervention 29 mai 2009 - 29 mai 2009 à 13:41
cs_paramotdam Messages postés 29 Date d'inscription jeudi 24 mars 2005 Statut Membre Dernière intervention 29 mai 2009 - 29 mai 2009 à 18:32
<style>
</style>

Bonjour,

J'aimerais créer une image qui soit cliquable, par
n'importe que moyen
fonctionnant.

J'ai essayé de faire un bouton,
avec une image dessus, mais le problème
c'est qu'on voit les bord du bouton
autour de l'image... (même si on met un
bouton plat)
J'ai essayé de faire
un static, mais je n'arrive pas à mettre d'image
cliquable...
J'ai essayé
de passer par un icône (grâce au tuto :
http://www.siteduzero.com/tutoriel-3-8778-apprentissage-de-l-api-windows.html'all=1#ss_part_8709)

partie "Le contrôle Static", sa n'a pas marché.

Dernier code essayé
:




.rc :
ID_I_QUITTER BITMAP "quitter.bmp"

.cpp :
- dans
WM_CREATE:
boutons[1] = CreateWindow("STATIC", "", WS_CHILD | WS_VISIBLE |
SS_BITMAP |
SS_NOTIFY,
38, 30, 0, 0, hwnd, (HMENU)ID_B_QUITTER, hinst,
NULL);

- dans WM_PAINT:
imageBouton[1] = LoadImage(NULL,
MAKEINTRESOURCE(ID_I_QUITTER),
IMAGE_BITMAP, 0, 0,
LR_LOADFROMFILE);
SendMessage(boutons[1], STM_SETIMAGE, (WPARAM)IMAGE_BITMAP,

(LPARAM)(HANDLE)imageBouton[1]);

J'écoute toute suggestion
!

Merci...

2 réponses

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
29 mai 2009 à 15:38
Salut
Tu définies ton image en static et tu interceptes les messages : WM_LBUTTONDOWN et WM_LBUTTONUP.
en vérifiant bien sure que la souris est au dessus de l'image.

Deuxième solution, tu crées un bouton avec le style BS_OWNERDRAW et tu dessines complètement ton bouton. ex:
case WM_DRAWITEM:
        DRAWITEMSTRUCT dis;
        dis = *(LPDRAWITEMSTRUCT)lParam;        ///Get the parameters
        for(i=0;i<5;i++)                        //And test for each button if he need to be painted
            if(dis.hwndItem == hwndButton[i] && dis.itemAction==ODA_DRAWENTIRE)
            {
                if(dis.itemState & ODS_DISABLED)
                    BitBlt(dis.hDC, 0, 0, 25, 25, hdcButton, 50, 0, SRCCOPY);
                else if(dis.itemState & ODS_SELECTED)
                    BitBlt(dis.hDC, 0, 0, 25, 25, hdcButton, 25, 0, SRCCOPY);
                else
                    BitBlt(dis.hDC, 0, 0, 25, 25, hdcButton, 0, 0, SRCCOPY);
            }   
           
        break;
A+
____________________________________________________________________________
Mon site internet :  
http://ImAnalyse.free.fr
3
cs_paramotdam Messages postés 29 Date d'inscription jeudi 24 mars 2005 Statut Membre Dernière intervention 29 mai 2009
29 mai 2009 à 18:32
Je te remercie ! Sa marche nickel en interceptant les messages sur WM_LBUTTONDOWN.

A+
0
Rejoignez-nous