Bouton et région

Résolu
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 - 4 sept. 2005 à 17:24
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 - 4 sept. 2005 à 20:09
Je cherche à créer un bouton de forme non standard.

Je définis une région elliptique sur un bouton dessiné en ressource.

Voici le code utilisé pour créer la région:

<hr size="2" width="100%"> HRGN hRgn, oldRgn = NULL;

RECT Rect;



hButton = GetDlgItem(hwnd, IDC_BUTTON);

GetWindowRect(hButton, &Rect);

Rect.right -= Rect.left;

Rect.left = 0;

Rect.bottom -= Rect.top;

Rect.top = 0;

hRgn = CreateEllipticRgnIndirect(&Rect);

GetWindowRgn(hButton, oldRgn);

CombineRgn(hRgn, hRgn, oldRgn, RGN_AND);

if (hRgn != NULL)

SetWindowRgn(hButton, hRgn, TRUE);

ShowWindow(hwnd, SW_SHOW);

UpdateWindow(hwnd);

DeleteObject(hRgn);

DeleteObject(oldRgn);


<hr size="2" width="100%">Avec ce code, ma région est bien créée
puisque je ne peux cliquer que sur une partie du bouton, la partie
définie par l'ellipse créée, mais tout mon bouton reste visible

J'ai donc créé un bouton rectangulaire (super, je savais pas le faire autrement, lol) sur lequel on ne peut cliquer que sur la partie elliptique.

Ce que je cherchais à faire, c'étatit un bouton elliptique!!!

Si vous avez des idées, parcque je dois dire que je suis à court.



Les fois ou j'ai utilisé des régions, c'était sur la fenetre mere, pas
sur un composant, est ce que cela peut changer quelquechose?


Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]

4 réponses

julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
4 sept. 2005 à 20:09
J'ai fini par trouver.

Il fallait donner au bouton (et aux autres composants que j'ai utilisé par la suite) le style WS_CLIPCHILDREN

Pour cela, il fallait faire:

SetWindowLong(hButton, GWL_STYLE, GetWindowLong(hButton, GWL_STYLE) | WS_CLIPCHILDREN);


Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
3
SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013
4 sept. 2005 à 18:31
tu as testé SelectClipRgn(HDC,RGN); ???
0
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
4 sept. 2005 à 18:42
Oui, et ca ne change rien.
Je l'ai testé lors de la création du bouton (WM_INITDIALOG) et je récupérais le DC du bouton avec GetWindowDC et GetDC.
J'ai aussi mis mon bouton en ownerdraw et essayé de le dessiner.
Pour récupérer le HRGN je faisais alors un GetWindowRgn

Mais ca n'a strictement rien changé du tout.
Faut-il que le composant est un style particulier pour avoir une région, un style avancé (WS_EX_...)?

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
0
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
4 sept. 2005 à 19:31
Etrange....

Lors d'un de mes tests, je me suis trompé de handle, et j'ai donné le handle de ma fenetre à la place du handle du bouton.

Et la, au bizarrerie, ma fenetre est devenue elliptique.

Mais quand je redonne le handle de mon bouton, rien à faire, il reste désespérément rectangulaire.

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
0
Rejoignez-nous