begin process at 2008 05 16 04:56:26
1 173 215 membres
57 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 !

[CLASS] RESTREINDRE LE CURSEUR DE LA SOURIS À UNE ZONE DE CONTRÔLE


Information sur la source

Catégorie :API Classé sous : restreindre, clipcursor, getwindowrect, getdesktopwindow, class Niveau : Débutant Date de création : 10/06/2007 Date de mise à jour : 11/06/2007 01:29:47 Vu / téléchargé: 4 309 / 441

Note :
Aucune note

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


Description

Mini Class avec seulement 2 méthodes, qui sert à restreindre le curseur de la souris à une zone de contrôle, par exemple, vous souhaitez que le curseur ne quitte pas la zone d'une ListBox, et vous ne pourrez la quitter qu'en cliquant sur le contrôles.


Bon il n'y a pas beaucoup de lignes de code, mais je pense que ça peut-être utilse à quelqu'un  ;)

Source

  • ' Instance de la classe
  • Private MyRestriction As New clsRestriction
  • ' Restriction sur une ListBox
  • MyRestriction.EnableRestriction List1
  • ' Libération de la restriction
  • MyRestriction.DisableRestriction
' Instance de la classe
Private MyRestriction As New clsRestriction

' Restriction sur une ListBox
MyRestriction.EnableRestriction List1

' Libération de la restriction
MyRestriction.DisableRestriction
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

10 juin 2007 23:48:07 :
*** Suppression variable public pour une propriété en lecture seule *** Libération de l'objet oObject *** Vérification sur l'objet oObject : hWnd ?
11 juin 2007 01:29:47 :
*** Suppression de l'API GetDesktopWindow ... *** ... et pour libérer le curseur : ClipCursor ByVal 0& >>Merci MimiZanzan :p
  • signaler à un administrateur
    Commentaire de mimiZanzan le 11/06/2007 01:20:58

    Très simple et très utile, par ex pour aider un utilisateur à remplir un formulaire.Cà me sera en effet très utile.
    Je me permets une petite remarque: on peut encore simplifier le code en utilisant seulement "ClipCursor ByVal 0&" pour libérer le curseur dans la sub "DisableRestriction". Celà évite d'utiliser l'API "GetDesktopWindow" et c'est plus rapide que passer par le handle du bureau.
    Sinon, encore c'est super, ponds-nous encore qq bons petits codes comme çà!

  • signaler à un administrateur
    Commentaire de mortalino le 11/06/2007 01:24:03

    Salut MimiZanzan et merci beaucoup pour tes encouragement  ;)

    Pas bête du tout l'idée du ByVal 0&, je mets à jour de suite. Effectivement, une fonction d'API en moins :D
    Merci encore,
    @ bientôt  :p

  • signaler à un administrateur
    Commentaire de mortalino le 11/06/2007 05:44:27

    Beh je viens de remarquer une chose : ça arrange, ça n'arrange pas, c'est à vous de voir

    --> Si une zone est en cours de restriction sur un contrôle, elle s'annule en cas de changement de fenêtre (Alt + Tab) et toute la zone de l'écran est à nouveau disponible !

    @++

  • signaler à un administrateur
    Commentaire de Renfield le 11/06/2007 09:06:23 administrateur CS

    inutile de mettre:

    Private Sub Class_Terminate()
        SelectedObjectName = vbNullString
    End Sub


    mais rien de grave a le laisser...^^

  • signaler à un administrateur
    Commentaire de mimiZanzan le 11/06/2007 12:44:59

    Mortalino, je voudrais appliquer ton code à un programme Excel VBA.
    Sais-tu comment récupérer les handles des contrôles de la form, puisqu'il n'y a pas de propriété Contrôle.Hwnd en VBA?
    Merci d'avance.

  • signaler à un administrateur
    Commentaire de Renfield le 11/06/2007 12:58:13 administrateur CS

    le tout est simplement de connaitre les coordonnées (en pixels) du rectangle dans lequel tu souhaite enfermer le curseur, et ensuite appeler l'API ClipCursor

  • signaler à un administrateur
    Commentaire de mimiZanzan le 11/06/2007 18:31:55

    Merci RENFIELD, çà marche, à condition de prendre les coordonnées du contrôle en relation avec l'écran ,c'est à dire qu'il faut tenir compte de la position de la form sur l'écran, et bien sûr travailler en pixels.
    Pour la position top, il faut également ajouter la valeur de la hauteur da la barre de titre de la form (28 pixels normalement), et si on est puriste, ajouter pour la position left la valeur de l'épaisseur du cadre de la form (2 pixels)...
    Merci encore, la solution était plus simple que je le pensais!

  • signaler à un administrateur
    Commentaire de mortalino le 11/06/2007 21:04:19

    Salut Renfield,

    Ok pour le vbNullString.
    Par contre, confirme moi stp, j'ai lu plusieurs fois qu'avant de terminer une class, il fallait tout vider (Erase tableau, Set objet = Nothing, et donc mettre les variables à vides).

    Est-ce vrai ?
    Ou est-ce inutile ici car il n'y a qu'une variable ?

    Merci,
    @++

  • signaler à un administrateur
    Commentaire de Renfield le 11/06/2007 21:58:43 administrateur CS

    quand tu sors de ta fonction, que la variable devient hors de portée, un compteur interne a l'objet est décrementé (c'est le nombre de references vers cet objet)
    s'il atteint 0, le Class_Terminate est appelé (enfin, son destructeur) et les resources sont libérées.

    la mécanique COM est bien en place... nul besoin, de faire Set a = Nothing, donc...
    simple habitude a prendre que de libérer les chose dès qu'elles ne servent plus, de savoir ou tu en est... y'a pas de danger a ne pas le faire, vraiment... gaffe avec les handle vers les objets GDI, les references que tu auraient piqué vers ton objet...

    pour le tableau, même topo... si ca sert plus, tu vide, raison de plus our bien définir la portée des variables, et de favoriser les parametres aux variables publiques (une bonne architecture facilitera la réutilisabilité du code, et la modification de points précis du code, pour une plus grande maintenabilité...)

  • signaler à un administrateur
    Commentaire de mortalino le 11/06/2007 22:03:29

    OK! Merci.  ;)

  • signaler à un administrateur
    Commentaire de Warny le 12/06/2007 11:02:22

    Pour les string, c'est un cas particulier : la variables est un pointeur vers la string qui est désaffecté à chaque affectation de la variable. Je m'explique :
    dans le cas
    a = "abc"
    a pointe vers "abc"
    a = "efg"
    "abc" est supprimé de la mémoire puis a pointe vers "efg"
    donc si tu fais
    a = vbnullstring tu affectes une nouvelle valeur vide à a qui devra être désaffectée. En principe c'est nettoyé par le compilateur, mais c'est pas très utile.

  • signaler à un administrateur
    Commentaire de pluplu le 12/06/2007 21:26:58

    C'est sympa cette class Mortalino, il suffisait d'y penser ! cela permet entre autre d'obliger les utilisateurs à remplir un champ. Merci de nous en faire profiter

    Bonne Prog.

  • signaler à un administrateur
    Commentaire de Exploreur le 14/06/2007 09:05:50

    Salut Mortalino,

    Sympa cette source, mais je viens de m'appercevoir d'un truc...je ne sais pas si cela vient de chez moi ou de la source mais voici :

    Donc quand je fais restreindre sur n'importe quels contrôles et que par la suite je fait : ALT + F4, le prog se ferme bien mais la souris elle, reste restreint dans le choix que j'ai fait précédement et pour retrouver les joies de la balade de la souris, obliger de faire encore ALT + F4...

    Donc je pense cas un moment quand on fait AMT + F4, il y a quelque chose qui reste toujours en "fonction" ou qui n'est pas décharger de l'appli....

    Vla...vla...

    A+
    Exploreur

  • signaler à un administrateur
    Commentaire de Renfield le 14/06/2007 09:19:16 administrateur CS

    manque un

    ClipCursor ByVal 0&

    dans le Class_Terminate

  • signaler à un administrateur
    Commentaire de Exploreur le 14/06/2007 09:32:27

    Salut Renfield,

    Impécable.....

    A+
    Exploreur

  • signaler à un administrateur
    Commentaire de mortalino le 14/06/2007 12:25:01

    Salut Exploreur,

    beh voilà.. (merci Rey)
    Effectivement, je n'avais pas pensé à fermer l'application 'avant' de restaurer le curseur.

    ++

  • signaler à un administrateur
    Commentaire de sethlaerce le 08/05/2008 18:06:45

    slt man
    j 'ai aimé c'est cool et  j t'encourage
    ciaoo!

  • signaler à un administrateur
    Commentaire de mortalino le 08/05/2008 18:25:09

    Salut,

    merci  ;)
    @++

Ajouter un commentaire

Discussions en rapport avec ce code source

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 !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS