SUBCLASSING - RÉCUPÉRER PLUS D'EVENEMENTS.

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 11 mai 2005 à 13:50
SkyRocKo Messages postés 174 Date d'inscription samedi 10 mai 2003 Statut Membre Dernière intervention 18 février 2006 - 31 janv. 2006 à 16:30
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/31323-subclassing-recuperer-plus-d-evenements

SkyRocKo Messages postés 174 Date d'inscription samedi 10 mai 2003 Statut Membre Dernière intervention 18 février 2006
31 janv. 2006 à 16:30
Bon travail, bonne source pour se familiariser avec le subclassing...

Bone continuation !

SkyRocKo
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
10 juin 2005 à 14:14
Dommage qu'on ne puisse pas noter les commentaire ;-)
Merci à vous deux Renfield et Econs !
cs_Danyz Messages postés 98 Date d'inscription dimanche 20 juillet 2003 Statut Membre Dernière intervention 31 octobre 2006
16 mai 2005 à 14:21
Merci pour la source et le très bon commentaire de Renfield ;)

@ ++
frk25 Messages postés 13 Date d'inscription samedi 24 mai 2003 Statut Membre Dernière intervention 31 mai 2005
12 mai 2005 à 20:33
Exellent comme source, avec une bonne introduction au subclassing ...
un gros merci :)
odan71 Messages postés 140 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 11 décembre 2007
12 mai 2005 à 19:21
très instructif,
un grand merci ;)
cs_BFR Messages postés 88 Date d'inscription mardi 30 juillet 2002 Statut Membre Dernière intervention 1 mars 2008
11 mai 2005 à 16:23
Bonjour
Simplement une source simple,claire et concise pour ceux qui découvre le subclassing, on aimerait en avoir plus de sources comme cette dernière, pour ceux qui debute ou sont initié comme moi. 9/10
A+++
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
11 mai 2005 à 14:20
Que dire après celà, sinon ... MERCI pour ces précisions !!
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
11 mai 2005 à 13:50
Une breve introduction, pour ceux qui se demandent ce qu'est reelement le subclassing, illustré ici.

Windows fonctionne avec des systemes de messages envoyés aux fenetres. Pas simplement ce que l'on appelle fenetre (le truc avec le bouton fermer, les menus....) mais les boutons, listbox, forms,... qui sont elles aussi des fenetres

Chaque action utilisateur, et un bon nombre d'evenements systemes, ou simplement des requetes faites au fenetres, passent par des messages.

quand vous passez la souris au dessus d'un bouton, par exemple, il recevra le message WM_MOUSEMOVE , indiquant les coordonnées du curseur... Cet evenement est visible sous VB (MouseMove) qui traduit en fait le message, et nous le fournit pour programmer nos chers programmes.


Le subclassing, consiste en l'ajout avant le controle d'une fonction filtre qui va recevoir les messages.

il sera alors possible de modifier les informations contenues, le code de retour, de simplement tenir compte de l'apparition du message... ou de décider de ne pas l'envoyer au controle...

cela vous donne accès a deux nombreux evenements inaccessibles sans cela. (par exemple, l'utilisation de la molette, le clic dans la barre de titre, le deplacement d'une fenetre, .....)


un point sur le subclassing dans VB...
VB est TRES chatouilleux quand on parle de subclassing

des reflexes a prendre :
- ne JAMAIS utiliser le bouton STOP de l'interface, car il coupe tout violament, et ne permet pas de stopper le subclassing : VB crashe...
- toujours stopper le subclassing quand vous fermez vos fenetres (possibilité de se greffer sur le message WM_DESTROY)
- ne pas utiliser de point d'arrets, ni mettre en pause l'execution, les messages continuent a arriver, VB crash une fois de plus
- Sauvegardez souvent... le subclassing implique bien souvent des copie mémoire, des API qui peuvent en phase de conception etre bancales, et faire crasher VB


Loin de moi l'envie de vous effrayer, je parle en connaissance de cause, soyez en surs.

Une solution pour stabiliser le tout : l'utilisation d'une Dll pour faire le subclassing. Cela vous permet d'utiliser le bouton STOP (que je deconseille vivement tout de meme, il n'est pas sain) ou les points d'arret...

En phase de conception, je conseille l'utilisation d'une dll, qui vous fera gagner du temps

voici un lien vers l'une de ces dll
http://www.vbfrance.com/code.aspx?id=19625
(je preche pour ma paroisse, c'est ma source ;) les messages sont pour la plupart inclus, et certaines fonctions utiles ont été integrées ; le subclassing s'integre alors très vite dans une appli)

Aucun risque en mode compilé, il est alors possible de deconnecter la dll, et passer par du sublcassing comme montré dans la présente source.
un simple test :

If App.LogMode <> 0 Then
StartSubClassing
End If

permet de ne lancer le subclassing qu'en mode compilé
(une autre solution est l'utilisation de compilation conditionnelle :

#If DEBUG = 1 Then
StartSubClassing
#End If


voila, j'espere avoir été suffisament clair pour vous donner envie de plonger dans les possibilités offertes par le subclassing.
Rejoignez-nous