begin process at 2012 05 22 12:31:23
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Control

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

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


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Control Niveau :Initié Date de création :11/05/2005 Vu / téléchargé :5 526 / 659

Auteur : econs

Ecrire un message privé
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

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

[ASTUCE] MESSAGEBOX QUI N'ARRETE PAS LE PROCESSUS COURANT
DETECTER CANCEL SUR L'INPUTBOX
Source avec Zip Source avec une capture TRI NUMÉRIQUE LISTBOX COMBOBOX
Source avec Zip Source avec une capture PAINTFORM SANS API
VBA EXCEL IMPRESSION - FAIRE TENIR LES DONNÉES SUR MOINS DE ...

 Sources de la même categorie

Source avec Zip Source avec une capture LE PLUS SIMPLE PROGRESSBAR AU MONDE par m_simohamed
Source avec Zip COMMUNICATION MODBUS MASTER par sergelapointe
Source avec Zip Source avec une capture DÉPLACEMENT AVEC FLÈCHES DANS UN PAVÉ DE TEXTBOX 9X9 DYNAMIQ... par EhJoe
Source avec Zip Source avec une capture Source .NET (Dotnet) CONTROLSTARS EN RÉPONSE À JAKNIGHT007 par bigboss9
Source avec Zip Source avec une capture Source .NET (Dotnet) CALENDRIER ANNUEL NORME ISO par Prog1001

Commentaires et avis

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.

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

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

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

Commentaire de odan71 le 12/05/2005 19:21:26

très instructif,
un grand merci ;)

Commentaire de frk25 le 12/05/2005 20:33:12

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

Commentaire de Danyz le 16/05/2005 14:21:14

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

@ ++

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 !

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

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 : 0,749 sec (3)

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