Region et cliping

SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013 - 11 janv. 2005 à 18:18
SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013 - 14 janv. 2005 à 12:44
Bonjour, j iamerais savoir si ceci est normal ou quoi !! Il s agit
d'un code permettent d afficher des boutton ownerdraw mais en gardant
le fond du dialog (ki peu etre une image collé avec bitblit)





Static HRGN rngg = NULL;



dessin_du_boutton (HWND hwnd,LPDRAWITEMSTRUCT lpds,LPCTSTR texte,bool survol) {



if (rngg == NULL) {

HBITMAP htmp = LoadAnImage(butt->fich );

rngg = BmpToRgn(htmp,RGB(0,0,0));

SelectClipRgn(lpds->hDC,rngg);

SetWindowRgn(hwnd,rngg, TRUE);

}



[... ]

BBlit ......................

[...]

}



Le problem de mon programme c'est ke le clipping marche mais le bitblt
affiche mon boutton ainsi qu'un fond noir pour qu il fonctionne
correctement je suis obligé de supprimer la condition if (rngg == NULL)
{ et donc a chaque fois de reconvertir le bmp en rgn ce qui bouffe des
ressources. J'ai fait des test en mode debug le pointeur vers la region
est correct et ne change pas (sauf si je vire la condition )!!



G aussi testé en essayant de copier la region avec CombineRgn(rngg2,rngg,NULL,RGN_COPY); mais ca ne marche pas !!

2 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
12 janv. 2005 à 12:11
SelectClipRgn(lpds->hDC,rngg);

est-il fait en dehors du test if (rngg == NULL) ?

Je pense qu'il faut le faire à chaque fois (le hdc fourni par le message est réinitialisé à chaque appek)
0
SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013
14 janv. 2005 à 12:44
Tiens j avais pas testé SelectClipRgn !!



En fait le probleme viens du pointeur rngg kil me fo recalculer a
chaque fois, Mais finnallement j'ai laissé tomber en fait le clipping
de la fentre est ok meme si on le fait une seule fois il ma sufffit de
faire un bblit special ( un code derivé de maskblit pour la
compatibilité avec win 98) pour ne pas afficher le fond du motif est ca
passe !!!



Par contre faudra que je teste la fonction SelectClip !!
0