Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

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


Information sur la source

Catégorie :Control Niveau : Initié Date de création : 11/05/2005 Vu / téléchargé: 4 200 / 609

Note :
9,67 / 10 - par 3 personnes
9,67 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

Description

Ce code explique, je l'espère, un peu le subclassing.
Il permet de récupérer des evénements supplémentaires sur des contrôles (ici une ListBox, mais on peut mettre n'importe quoi).
Exemple d'evénements récupérables :
- double clic avec le bouton droit.
- clic avec la molette (ou le bouton du milieu).
- double clic avec la molette (ou le bouton du mileu).
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de Renfield le 11/05/2005 13:50:43 administrateur CS

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.

signaler à un administrateur
Commentaire de econs le 11/05/2005 14:20:54 administrateur CS

Que dire après celà, sinon ... MERCI pour ces précisions !!

signaler à un administrateur
Commentaire de BFR le 11/05/2005 16:23:51

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+++

signaler à un administrateur
Commentaire de odan71 le 12/05/2005 19:21:26

très instructif,
un grand merci ;)

signaler à un administrateur
Commentaire de frk25 le 12/05/2005 20:33:12

Exellent comme source, avec une bonne introduction au subclassing ...
un gros merci :)

signaler à un administrateur
Commentaire de Danyz le 16/05/2005 14:21:14

Merci pour la source et le très bon commentaire de Renfield ;)

@ ++

signaler à un administrateur
Commentaire de ScSami le 10/06/2005 14:14:06

Dommage qu'on ne puisse pas noter les commentaire ;-)
Merci à vous deux Renfield et Econs !

signaler à un administrateur
Commentaire de SkyRocKo le 31/01/2006 16:30:35

Bon travail, bonne source pour se familiariser avec le subclassing...

Bone continuation !

SkyRocKo

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.