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é: 5 353 / 490

Note :
Aucune note

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


Description

Cliquez pour voir la capture en taille normale
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

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

Historique

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

Commentaires et avis

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 dans le forum

plantage intempestif VB et directx7 [ par ze_bat ] Hello,j'ai développé un petit jeux en directx7 et VB6. J'ai créer une classe missile: qui instancie une frame et un visual dedans (le missile) au clas Web Class [ par CK ] Salut,j'ai du mal à assimiler la notion des web class et leurs manières d'utilisation.si quelqu'un peut me donner quelques explications je le serai re Chargement dynamique [ par couriousous ] Hello!! QQn sait comment charger un controle (Winsock dans mon cas) sans passer par la commande Load(nom(index)) car cela serait pour l'utiliser sur u G LES NERFS : PBS POUR REMPLIR 1 COLLECTION [ par thehitman ] g cree un module de classensuite je lie une table et j'affecte les champs dans mon objet de ma classensuite je veux mettre mes objets dans une collect Bug avec les class en ASP [ par RayBan ] Hello,Microsoft à de nouveaux frappé... Un superbe bug avec IIS 4 et ASP 3. Lors de l'uilisation de class en ASP, l'evénement Class_Terminatet() ne fo restreindre l'acces au PC [ par karn ] je voudrais k'au demarage une fenetre se lance et kon puisse executer uniquement se kil y a dans la fenetre, je suis suis tres clair la.. en fait un p Class sous VB.NET [ par steph95 ] Je m'initie à VB.net (ASP) et j'utilise un script dont certains nom ne sont pas déclaré comme FileStream, FileInfo ... , dans le tutorial, il m'est in convertir BMP en JPG [ par psykokouak ] slt,je cherche le code pour transfomer une serie de bmp dans un répertoire en jpg .. (ou meme envoyé c bmp dans un picturebox pour les transformer de Difference entre MODULE et CLASS [ par minotaure083 ] Bonjour,J'aimerai connaître la difference entre un MODULE et une CLASS.Si vous avez qqs exemples simples ce ne sera pas de refus.... ;-)))Merci


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

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

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,842 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é.