begin process at 2008 05 16 09:01:50
1 173 235 membres
76 nouveaux aujourd'hui
13 970 membres club

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é: 3 560 / 567

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

  • 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

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS