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

Signaler
Messages postés
29
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
29 mai 2009
-
Messages postés
29
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
29 mai 2009
-
<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

Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
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
Messages postés
29
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
29 mai 2009

Je te remercie ! Sa marche nickel en interceptant les messages sur WM_LBUTTONDOWN.

A+