Evènement PAINT d'un contrôle

nicolos Messages postés 11 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 7 décembre 2004 - 2 nov. 2004 à 10:47
nicolos Messages postés 11 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 7 décembre 2004 - 3 nov. 2004 à 22:00
Bonjour,

Je voudrais savoir comment capturer l'évènement PAINT d'un controle tel que TLabel ou TButton sous Borland C++ Builder 6 ?
Ou sinon, de même avec un STATIC ou CButton sous Visual C++ 6

Merci

5 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
2 nov. 2004 à 13:36
Sous Visual C++, tu peux sous classer le controle (voir SetWindowLong sur MSDN), et traiter WM_PAINT dans la nouvelle WndProc
0
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
2 nov. 2004 à 17:19
Pour C++ Builder, si çà marche comme Delphi, tu as un event OnPaint dans lequel tu peux utiliser le TCanvas au lieu de l'API.
0
nicolos Messages postés 11 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 7 décembre 2004
2 nov. 2004 à 18:42
Justement, le problème est là.

Il n'y a pas dévènement onPaint dans le gestionnaire de proriétés du controle TLabel ou TButton sous Borland C++ Builder 6. Alors, comment faire ?

Merci
0
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
2 nov. 2004 à 19:00
Essaie de surcharger directement Paint dans ton code (section protected, je crois) avec la directive override, et appelle inherited dès le début pour que le contrôle se dessine... Ensuite, tu pourras dessiner tes propres modifications (ou tout gérer toi même, sans inherited).

Encore une fois je me base sur Delphi, donc je ne sais pas si c'est applicable (mais logiquement, çà devrait)...
0

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

Posez votre question
nicolos Messages postés 11 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 7 décembre 2004
3 nov. 2004 à 22:00
J'ai réussi à surcharger la fonction qui gère les évènements du controle, mais il y a un nouveau problème, une erreur à la fermeture de l'application EStackOverFlow.

1:   //Lors de la création de la fenêtre
2:   Label1->WindowProc = Label1WndProc;
3:   
4:   //Ma fonction de gestion des évènements de mon Label1
5:   void __fastcall Label1WndProc(TMessage &message) {
6:      if(message.message == WM_PAINT)
7:         // Gestion de mon dessin
8:      else
9:         Form1->WndProc(message);
10:  }


Le problème se situerai à la ligne 9, d'après le débogueur de Borland C++ Builder 6.
Et donc, pourquoi cette erreur ?
Si j'enlève le renvoie du message par WndProc(), il n'y a plus d'erreur, mais les évènemnts autres que PAINT définie à partir de l'esplorateur de propriétés ne fonctionnent plus.
Voila

merci
0
Rejoignez-nous