IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Pointeur, curseur souris en forme de main


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 129
    Points : 53
    Points
    53
    Par défaut Pointeur, curseur souris en forme de main
    Bonjour,

    La propriété mousepointer d'une form permet de changer le pointeur de la souris, mais les formes prédéfinies ne permettent pas d'obtenir un pointeur en forme de main (comme lorsque l'on survole un hyperlien par exemple).

    Je sais que l'on peut définir son pointeur avec une icone (main.cur) mais ou trouver mon icones en forme de main.

    Si quelqu'un voit une maniere simple de transformer le pointeur en main (dans mon cas c'est lors d'un survol de bouton, mais je ne pense pas que cela soit un facteur clef).

    Merci

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Si quelqu'un voit une maniere simple de transformer le pointeur en main
    de manière simple non. Par API oui !

    Maintenant, tu peux également :
    1) faire une capture d'écran quand s'y trouve une "main", coller cette capture dans un outil comme Paint, sélectionner ta "main", copier cette sélection, la coller dans un petit bmp... et sauvegarder cette image pour t'en servir

    Je te signale que ta "main", ainsi que d'autre, se trouve dans le répertoire cursors de Windows.
    Tu y a entre autres : hmove.cur (mais en format cur non accepté par VB), d'autres en .cur et d'autres en .ani (animées). Mais, pour les utiliser, il te faudrait te servir d'une API (et tu dis vouloir faire "simple"... alors...)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 129
    Points : 53
    Points
    53
    Par défaut
    Et par API, cela est il compatible pour toutes les versions de Windows ?
    Et si oui comment faire ?

    Au pire je ferai la manière imprime écran mais j'ai peur que ce ne soit pas la solution optimale

  4. #4
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    J'ai épuisé mon quota de pièces jointes.

    On va essayer de faire sans :

    Sur une form :
    un control commondialog nommé CommonDialog1
    un bouton de commande nommé command1

    et le code qui suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Option Explicit
    Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
    Private Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long
    Private Declare Function SetSystemCursor Lib "user32" (ByVal hcur As Long, ByVal id As Long) As Long
    Private Declare Function GetCursor Lib "user32" () As Long
    Private Declare Function CopyIcon Lib "user32" (ByVal hIcon As Long) As Long
    Private Const OCR_NORMAL As Long = 32512
    Private curseurpresent As Long
    Private iconcurseurpresent As Long
     
    Private Sub Command1_Click()
      '===================je récupère d'abord (pour pouvoir au besoin le restitier) le curseur en cours
      curseurpresent = GetCursor()
      iconcurseurpresent = CopyIcon(curseurpresent)
      '=================================================================
      Dim myDir As String
      Dim lDir As Long
      myDir = Space(255)
      lDir = GetWindowsDirectory(myDir, 255)
      myDir = Left$(myDir, lDir) & "\cursors\"
      CommonDialog1.InitDir = myDir
      CommonDialog1.ShowOpen
      definitcurseur CommonDialog1.filename
    End Sub
     
    Private Sub Form_Activate()
      Command1.Caption = "choisir un curseur"
    End Sub
     
    Sub definitcurseur(lefic)
      Dim lecurseur As Long
      lecurseur = LoadCursorFromFile(lefic)
      Call SetSystemCursor(lecurseur, OCR_NORMAL)
    End Sub
     
    Private Sub Form_Unload(Cancel As Integer)
      '========= je restitue le curseur tel qu'il était
      Call SetSystemCursor(iconcurseurpresent, OCR_NORMAL)
    End Sub
    tu lances, tu regardes, tu comprends...
    et tu tires de tout celà ce qui te convient

    C'est facile

    Edit bon avec WIN 2000, Win XP (vérifié)
    Je pense (presque sur) que marche également avec WINNT et Win 98

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 129
    Points : 53
    Points
    53
    Par défaut
    Merci, je relis, je dors un peu et j'applique cela.

    PS: le quota de pièce jointe est ironique ou il y en a vraiment

  6. #6
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Citation Envoyé par Mandarine
    PS: le quota de pièce jointe est ironique ou il y en a vraiment
    Ce n'est pas ironique du tout. C'est un fait (512 K0... et j'ai épuisé ces 512 KO)

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 129
    Points : 53
    Points
    53
    Par défaut
    mince en utilisant le bout de code (sans rien modifier) ça ma changer mon icones de souris et ça ne l'a pas remise.

    Connaissez vous le nom de l'icone originelle de windows (car beaucoup de sressemble).

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 129
    Points : 53
    Points
    53
    Par défaut
    désolé pour les fautes

  9. #9
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Cà, c'est parce que tu as quitté par le stoprun de VB au lieu de quitter par la petite croix de la Form (j'ai oublié de le préciser )

    Bon :

    mets ce curseur : 3dwarro.cur .... et quitte à nouveau comme tu l'as fait la 1ère fois

    Les fois suivantes, par contre, quitte par la petite croix... bien sur

    Ceci étant dit : enquittant windows et redémarrant, tu retrouve ton curseur également . Mais fais exactement comme je te l'ai dit.

  10. #10
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    une autre methode, plus basique
    remplir la propriété mouseicon et mettre mousepointer à 99
    On peut rmettre en mode masqué quelque picturebox en autosize, charger ces picturebox avec des image de curseurs et faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub Command1_Click()
    'afficher une icone perso
      Me.MouseIcon = Picture1.Picture
      Me.MousePointer = 99
    End Sub
    Private Sub Command2_Click()
    'afficher pointer standard
      Me.MousePointer = 0
    End Sub

  11. #11
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    pour compléter l'intervension de Delbeke (salut!):

    On peut aussi aller chercher des curseurs (fichiers .cur) dans le répertoire où est installé VB (probablement C:\Program Files\Microsoft Visual Studio) sous le répertoire Common\Graphics\Cursors. Si ce répertoire n'est pas installé, fouille le cd d'installation de VB. Ça devrait y être.

  12. #12
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Bonjour Derlbeke, Bonjour zaza,

    Mandarine sait celà (voir son 1er "post"). Il/elle veut éviter de faire et utiliser une image à ce propos (relire ses messages), recherchant ce qui existe déjà !...
    Or, ni les .cur ni les .ani ne sont utilisables par cette méthode.

  13. #13
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    salut jmfmarquez, salut zaza

    Je ne suis pas sur de cela. peut être ne connaissait-elle pas le mode d'emploi pour le mousepointer = 99
    De toute façon, cette methode ne permet pas de définir le point chaud du curseur, ce que fait ta methode par contre

  14. #14
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    J'ai bien relu le premier message et il me semble qu'il est question de mettre une main pour curseur d'une form.

    Je dois cependant ajouter que les deux propriétés doivent être modifiées sur le bouton et non pas sur la form.

    donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    monBouton.MousePointer = 99
    monBouton.MouseIcon = nom_complet_du_fichier_curseur ' i.e. avec le chemin d'accès
    idéalement, on met une copie du fichier dans le projet pour mettre un chemin relatif (à partir du dossier du projet).

  15. #15
    Membre habitué Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Points : 139
    Points
    139
    Par défaut
    Plutot que d'aller chercher un fichier, il est beaucoup plus efficace (et sûr) de charger ce pointeur dans un des contrôles, en mode développement, en cliquant sur les trois points de la ligne "MouseIcon" de la fenêtre de propriétés. Si le pointeur ne doit pas toujours être une main, on utilise un bouton (ayant Visible à False) servant de conteneur.

    Ensuite, quand le besoin s'en fait sentir dans l'application, on peut dynamiquement affecter ce pointeur à un autre contrôle en écrivant (cmdHand est le bouton caché contenant le pointeur main, Ctrl est le contrôle à qui affecter un pointeur main):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Ctrl.MousePointer = vbCustom
    Ctrl.MouseIcon = cmdHand.MouseIcon
    Pour revenir à un pointeur standard, il suffit d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ctrl.MousePointer = vbDefault
    Nota : La définition de MouseIcon n'est à faire qu'une fois. A chaque fois que l'on mettra MousePointer = vbCustom, la main réapparaîtra.

    Par contre, il faut impérativement éviter le fichier. Pensez :
    1. à la distribution : il faudra intégrer le fichier au package (possibilité d'oubli ou d'erreur)
    2. à la suppression accidentelle du fichier par l'utilisateur (j'en connais qu'on appelle Attila !)
    3. au remplacement volontaire du fichier par un rigolo qui vous mettra à la place une image plus ou moins regardable par des yeux innocents.

    Il faut au maximum utiliser les ressources internes de l'exécutable, sauf si l'image doit être remplacée en dynamique (en encore, il y a des solutions plus élégantes).

    La solution fichier n'est à utiliser que pour une utilisation personnelle sur une machine personnelle utilisée de façon exclusive par le développeur d'une application provisoire.

    Désolée, zaza, mais je pouvait laisser passer ça comme conseil à un débutant, même si c'est beaucoup plus facile à décrire. Tu es une (future?) informaticienne et il faut assumer. J'espère que tu ne m'en voudra pas.

  16. #16
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Dans ce cas il y a les imageLists qui sont parfaits pour stocker les images, icônes et curseurs à utiliser sur une form et qui sont invisibles par défition. De plus, il peuvent contenir plus qu'une image...

    meu non, j'le prends pas mal. C'est juste que je voulais éviter de trop en envoyer à la fois à un débutant.

  17. #17
    Membre habitué Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Points : 139
    Points
    139
    Par défaut
    Citation Envoyé par zazaraignée
    Dans ce cas il y a les imageLists qui sont parfaits pour stocker les images, icônes et curseurs à utiliser sur une form et qui sont invisibles par défition. De plus, il peuvent contenir plus qu'une image...

    meu non, j'le prends pas mal. C'est juste que je voulais éviter de trop en envoyer à la fois à un débutant.
    Là je suis tout à fait complètement d'accord, c'est LA bonne solution (un peu lourde toutefois sur le plan ressources si on a juste un pointeur à stocker)

    J'aime à voir, zaza , que tu ne manques pas d'humour. Il en faut dans ce métier, sinon tous les informaticiens finiraient à l'asile.

  18. #18
    Membre expert
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Points : 3 890
    Points
    3 890
    Par défaut
    Tout à fait d'accord avec MDG Software !

    Le curseur, tu le transportes dans un fichier de ressources ou dans une imagelist si tu n'en as pas trop !

    cela évite d'être dépendant de la machine de développement.

    J'utilise la méthode décrite ci-dessus depuis que je fais du VB et je n'ai jamais eu de problème de déploiement.

    Il y a entre autre des librairie de curseur accessible sur internet sans problème.

  19. #19
    Membre à l'essai
    Femme Profil pro
    Retraitée
    Inscrit en
    Mars 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 78
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraitée
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2018
    Messages : 9
    Points : 11
    Points
    11
    Par défaut Picture1 d'une main
    Citation Envoyé par Delbeke Voir le message
    une autre methode, plus basique
    remplir la propriété mouseicon et mettre mousepointer à 99
    On peut rmettre en mode masqué quelque picturebox en autosize, charger ces picturebox avec des image de curseurs et faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub Command1_Click()
    'afficher une icone perso
      Me.MouseIcon = Picture1.Picture
      Me.MousePointer = 99
    End Sub
    Private Sub Command2_Click()
    'afficher pointer standard
      Me.MousePointer = 0
    End Sub
    Salut,
    Peux-tu nous joindre l'image d'une main ?
    Je ne connais pas bien, je m'amuse.
    Merci d'avance.

  20. #20
    Membre habitué Avatar de MGD_Software
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 137
    Points : 139
    Points
    139
    Par défaut Curseur souris en forme de main
    Ouahh! Ce sujet date d'il y a 12 ans !
    Depuis, j’ai abandonné VB6 au profit du C#...

    A l'époque, Windows 7 n’existait pas, et dans la bibliothèque de Windows XP, il n'y a pas de curseur en forme de main.
    Par contre, celle de Windows 7 en comporte 3, qu'il suffit d'aller chercher dans C:\Windows\cursors.
    Ils ont la même forme mais des tailles différentes.
    Je les mets en pièce jointe.
    Comme indiqué plus haut, il suffit de mettre la propriété MousePointer du contrôle à "99-Custom" et aller chercher le fichier .cur avec la propriété MouseIcon.
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [HTML 5] [canvas] coordonnées d'un clic souris - pointeur (curseur) souris
    Par El Saigneur dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 08/02/2011, 21h52
  2. Réponses: 13
    Dernier message: 19/03/2008, 17h53
  3. Réponses: 2
    Dernier message: 14/06/2007, 11h42
  4. Forme du pointeur de souris sur une cellule de tableau
    Par Delphi-ne dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 30/05/2007, 11h15
  5. Réponses: 3
    Dernier message: 20/10/2005, 20h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo