Boutons elliptiques, ronds,...

cs_Boa51 Messages postés 7 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 22 mars 2005 - 6 janv. 2005 à 21:00
cs_boony Messages postés 1 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 8 mars 2008 - 8 mars 2008 à 05:19
Bonjour tout le monde!

Je cherche à coder sous Visual C++ 6.0 des boutons elliptiques, ronds,...
J'arrive a le faire avec des fenêtres, mais pas des boutons...

Y'a t'il qq'un qui pourait m'aider ?

Merci d'avance.
@micalement,

Séb.

8 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
6 janv. 2005 à 21:21
utilise la fonction SetWindowRgn à ta fenêtre de bouton de la même
façon que tu le ferais pour une fenêtre classique : il faut se rappeler
qu'un bouton n'est rien plus qu'une fenêtre à la base !

DarK Sidious

[Administrateur et responsable VB/API du site ProgOtoP]
0
cs_Boa51 Messages postés 7 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 22 mars 2005
6 janv. 2005 à 21:53
ok merci !
je vais essayer, dès demain...

Séb.
0
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
13 janv. 2005 à 14:34
Voila, je fais ce bout de code pour creer un bouton elliptique:
hrgn = CreateEllipticRgn(0, 0, 400, 150);
SetWindowRgn(obj_monster_add.handle, hrgn, TRUE);

Le probleme, c'est que mon bouton n'est pas elliptique! Une zone elliptique est bien créée sur le bouton, mais tout le bouton est encore visible, même si seulement une zone de ce bouton est cliquable (celle definie par la region)
Avez vous une idee d'où cela pourrait venir?

Le handle donné a SetWindowRgn est bien celui du bouton! (verifié avec Spy++)

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
13 janv. 2005 à 14:39
Essaye de faire un InvalidateRect pour forcer la fenêtre à se
raffraichir, peut-être qu'il ne s'agit que de l'ancienne frame du
bouton qui est toujours tracé en fond...

DarK Sidious

[Administrateur et responsable VB/API du site ProgOtoP]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
13 janv. 2005 à 14:54
non, ca ne change rien!
Voila le code ou je le fais:
case WM_CREATE:
{
HRGN hrgn;


DrawStatic(hwnd);
DrawEdit(hwnd, edit, TRUE);
BOUTONCreate(hwnd, &obj_monster_add, "Monstre", 300, 300, 100, 20, WS_VISIBLE, TRUE);
hrgn = CreateEllipticRgn(0, 0, 400, 150);
SetWindowRgn(obj_monster_add.handle, hrgn, TRUE);
//Affichage en pleine ecran
ShowWindow(hwnd, SHOW_FULLSCREEN);
SetForegroundWindow(hwnd);
return TRUE;
}

Je ne sais pas si ca peut jouer, mais je fais aussi:
case WM_ERASEBKGND:
return (LRESULT)1;
car j'affiche un bitmap en fond, et ainsi j'evite les scintillements lors d'un redraw.

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
13 janv. 2005 à 15:36
Ben là je ne vois vraiment pas d'où ca peux venir ! Désolé !

DarK Sidious

[Administrateur et responsable VB/API du site ProgOtoP]
0
julienbj Messages postés 452 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 19 décembre 2008 15
13 janv. 2005 à 15:45
Je pense avoir trouver une piste avec la fonction ValidateRgn!
Apres l'avoir utilisée, je vois bien mon bouton avec sa forme elliptique, mais ce uniquement jusqu'à ce que je clique dessus!

Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]
0
cs_boony Messages postés 1 Date d'inscription mardi 16 mars 2004 Statut Membre Dernière intervention 8 mars 2008
8 mars 2008 à 05:19
Salut, je cherchais ma même chose que toi, et à force d'essai, j'ai trouvé que le FLAG manquant à la création du bouton est: WS_CLIPSIBLINGS

exemple:

hwndButton = CreateWindowEx(0,

"Button",
"ok",WS_CHILD| WS_CLIPSIBLINGS |WS_VISIBLE, 10,10,50,50,hwnd,(HMENU)BUTTON,hInst,NULL);

ßoony
0
Rejoignez-nous