Envoyer la notification WM_DRAWITEM (custom draw)

Résolu
Signaler
Messages postés
539
Date d'inscription
vendredi 6 juin 2003
Statut
Membre
Dernière intervention
14 juillet 2010
-
Messages postés
539
Date d'inscription
vendredi 6 juin 2003
Statut
Membre
Dernière intervention
14 juillet 2010
-
j'ai un petit probleme j'ai un boutton custom draw avec 2 images,

kan il est clické, il change d'image....

dans mon prog je fais un truc de genre
case WM_DRAWITEM:
{

lpdis = (LPDRAWITEMSTRUCT) lParam;
hdcMem = CreateCompatibleDC(lpdis->hDC);


SelectObject(hdcMem, hbm2);
StretchBlt(
lpdis->hDC, // destination DC
lpdis->rcItem.left, // x upper left
lpdis->rcItem.top, // y upper left

// The next two lines specify the width and
// height.
lpdis->rcItem.right - lpdis->rcItem.left,
lpdis->rcItem.bottom - lpdis->rcItem.top,
hdcMem, // source device context
0, 0, // x and y upper left
32, // source bitmap width
32, // source bitmap height
SRCCOPY); // raster operation

DeleteDC(hdcMem);
return TRUE;


}

ca marche nikel pour l'affichage du boutton dans initdialog je fais unhbm2 = LoadBitmap( hInstance, MAKEINTRESOURCE(IDB_BITMAP3));

kan je veux le changer j'ai k'a faire
hbm2 = LoadBitmap( hInstance, MAKEINTRESOURCE(IDB_BITMAP4)); par exemple

le truc c kan je click sur le bouton je rentre dans une boucle donc n'envoie po de msg WM_DRAWITEM

donc j'ai penser a ca

SendMessage(mainHwnd,WM_DRAWITEM,(WPARAM)IDC_CUR_HIDE,(LPARAM)quelquechose);

IDC_CUR_HIDE correspond a mon boutton custom draw

le probleme c ke dans lparam je sais pas koi remplir ou plutot comment le remplir car le WM_DRAWITEM en as besoin

je sais k'il fo remplir le DRAWITEMSTRUCT et le passé en param
mais aucune idée de comment !!!!

une idée???
youpi :)

3 réponses

Messages postés
539
Date d'inscription
vendredi 6 juin 2003
Statut
Membre
Dernière intervention
14 juillet 2010
1
bon j'ai testé UpdateWindow(mainHwnd);

c con mais ca marche :D

donc j'accepte ma réponse 8-)
youpi :)
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
22 août 2010
10
Je crois pas que ce soit à toi d'envoyer un WM_DRAWITEM.
Je pense que tu dois juste envoyer un WM_PAINT, c'est le système qui enverra alors un WM_DRAWITEM avec un bon lParam
Messages postés
539
Date d'inscription
vendredi 6 juin 2003
Statut
Membre
Dernière intervention
14 juillet 2010
1
ecoute j'y avais po penser mais dans mon cas ca marche po

SendMessage(mainHwnd,WM_PAINT,0,0);

j'ai pas de case WM_PAINT, peut etre k'il fo ke j'en rajoute un....

merci kan meme ......

une idée!!??
youpi :)