begin process at 2012 05 28 14:40:16
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

bouton et région


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

bouton et région

dimanche 4 septembre 2005 à 17:24:23 | bouton et région

julienbj


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:

         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);

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
Savon
dimanche 4 septembre 2005 à 18:31:13 | Re : bouton et région

SnOOpss

tu as testé SelectClipRgn(HDC,RGN); ???


dimanche 4 septembre 2005 à 18:42:52 | Re : bouton et région

julienbj

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
Savon
dimanche 4 septembre 2005 à 19:31:51 | Re : bouton et région

julienbj


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
Savon
dimanche 4 septembre 2005 à 20:09:09 | Re : bouton et région

julienbj

Réponse acceptée !

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
Savon


Cette discussion est classée dans : bouton, rect, région, hrgn, oldrgn


Répondre à ce message

Sujets en rapport avec ce message

SetWindowRgn() sur boutons [ par AlexMAN ] Bonsoir, Voila, j'ai un petit souci : j'aimerais créer un bouton avec les 'coins arrondis', pour cela, je crée une region (CreateRoundRectRgn()), puis Affichage d'une image sur un bouton [ par aztcaLISS ] Salut, je veux faire apparaître une image sur mon bouton hBtn1 que je crer sur ma fenêtre mais ça ne fonctionne pas. J'ai vu dans des examples de code Associer un bouton a un evenement [ par lamoueste ] Bonjour alors j'arrive pas a associer un bouton a un evenement :( en fait l'appui sur ce bouton declenche l'appel d'une methode associée a la classe d Demande renseignement S.V.P [ par computers123 ] Bonjour,Comment faire appel à un fichier texte pour modifier par exemple le caption d'un bouton?Le fichier texte contiendra les propriétées de plusieu Application Windows C [ par RM50Man ] Comment on fait pour savoir si on a appuier sur un bouton qui se situe ds la fenetre principale.Par exemple, si le bouton est ds une dialog on le recu Redimensionner une fenêtre d'execution sans perdre l'ascenseur ? [ par chuckboy ] Bonjour j'utilise la fonction suivante pour redimensionner ma fenêtre d'execution , le seul probleme c'est que je perd l'ascenseur sur le coté donc im Raffraichissement fenetre sur 2 ecrans [ par Corwin01 ] Bonjour a tous, Voila mon probleme est simple pas besoin de code... je gère dans mon appli le multi ecran jusque là tout va bien j'ai un bouton dessus Visible ou non [ par computers123 ] Bonjour,Comment fait-on pour rendre un bouton, textbox, etc... visible ou non .Dans la propriété il existe le ligne visible (false ou true) comment ap imprimer plusieurs lignes recuperées par un dialogue ???? [ par gege1024 ] bonjour, voila, je veux imprimer plusieurs ligne (j'ai pas de fichier mais je veux imprimer des données renseignés par un dialogue) je declare donc un Comment changer le texte d'un bouton dans une toolbar [ par dvt_robo ] Salut, je créer une toolbar (en Win32) pour pouvoir utiliser des dropdown boutons, J'affiche du texte sur ces boutons que j'aimerai modifier lorsque j


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,356 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales