OVH Cloud OVH Cloud

Curseur comme main

10 réponses
Avatar
J-Pierre
Bonsoir tout le monde

Je vous rassure, je suis allé sur le site de Raymond pour récupérer le code, je ne viens pas poser la même question pour la 1000ème
fois.

Ca fonctionne très très bien, on peut d'ailleurs adapter légèrement pour que le curseur change sur une étiquette ou n'importe quoi.
Et j'en profite pour remercier Raymond, son site est même tellement riche qu'il manque une fonction de recherche, ça s'appelle être
victime de son succès.......

Mon problème n'est pas là, plutôt que de restaurer arbitrairement le curseur à par exemple "arrow_m.cur", j'aimerais récupérer le
nom de la flèche que Windows utilise par défaut pour la restaurer dans la fonction Curseur_Normal() donnée par Raymond.

Par exemple, sur mon PC Win XP Pro, c'est une flèche blanche plus petite que celle d"arrow_m.cur"

J'ai beaucoup cherché, j'ai parcouru tous les curseurs de C:\WINDOWS\Cursors, je ne trouve pas. J'ai aussi parcouru toute ma doc sur
les API, quelque chose comme "GetCursorFromFile", rien trouvé non plus.

Merci d'avance
J-Pierre

10 réponses

Avatar
Raymond [mvp]
Ca fonctionne très très bien, on peut d'ailleurs adapter légèrement pour
que le curseur change sur une étiquette ou n'importe quoi.

Et j'en profite pour remercier Raymond, son site est même tellement riche
qu'il manque une fonction de recherche, ça s'appelle être

victime de son succès.......


Elle existe , cliquer sur le bouton recherche sur la page d'accueil et tu
peux rechercher soit sur le site soit sur mpfa.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.kynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA


"J-Pierre" a écrit dans le message de
news:

Avatar
J-Pierre
Bonjour Raymond,

Je suis bête, j'ai tellement l'habitude de voir un champ pour saisir sa recherche sur la page d'accueil que je n'ai pas cherché un
bouton..... Désolé.... par contre, pour le vrai problème, trouver le curseur par défaut, tu ne sais pas ?

J-Pierre

"Raymond [mvp]" a écrit dans le message de news:%
Ca fonctionne très très bien, on peut d'ailleurs adapter légèrement pour
que le curseur change sur une étiquette ou n'importe quoi.

Et j'en profite pour remercier Raymond, son site est même tellement riche
qu'il manque une fonction de recherche, ça s'appelle être

victime de son succès.......


Elle existe , cliquer sur le bouton recherche sur la page d'accueil et tu
peux rechercher soit sur le site soit sur mpfa.
--
@+



Avatar
Raymond [mvp]
regarde l'api GetCursor et la list sur :
http://www.mentalis.org/apilist/apilist.php

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.kynet.be/mpfa/charte.htm pour une meilleure
efficacité de tes interventions sur MPFA


"J-Pierre" a écrit dans le message de
news:
Bonjour Raymond,

Je suis bête, j'ai tellement l'habitude de voir un champ pour saisir sa
recherche sur la page d'accueil que je n'ai pas cherché un

bouton..... Désolé.... par contre, pour le vrai problème, trouver le
curseur par défaut, tu ne sais pas ?


J-Pierre


Avatar
J-Pierre
Bonsoir,

Bon, grâce à Raymond et au site http://www.mentalis.org/apilist/apilist.php, j'ai bien avancé, mais je bloque, voilà où j'en suis.
Désolé, y'a pas mal de code à copier/coller si ça vous intéresse.
----------------------------------------------------------
D'abord, pour tester le code de mentalis (adapté), un formulaire avec deux boutons.

Le code suivant pour les clics:

Private Sub Command1_Click()
Call Command1Exe
End Sub

Private Sub Command2_Click()
Call Command2Exe
End Sub

et un module standard

Option Compare Database
Option Explicit

'Code by Jerry Grant ()
'Visit his website at http://www.jg-design.net
'This example requires two command buttons
Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As
Long) As Long
Private Declare Function CopyIcon Lib "user32" (ByVal hIcon As Long) As Long
Private Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" (ByVal lpFileName As String) As Long
Private Declare Function SetCursor Lib "user32" (ByVal hCursor As Long) 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 Const OCR_NORMAL As Long = 32512
Private currenthcurs As Long
Private tempCurs As Long
Private newhcurs As Long

Public Sub Command1Exe()
Dim myDir As String
Dim lDir As Long

currenthcurs = GetCursor()
tempCurs = CopyIcon(currenthcurs)
myDir = Space(255)
lDir = GetWindowsDirectory(myDir, 255)
myDir = Left$(myDir, lDir) & "cursorsbanana.ani"
newhcurs = LoadCursorFromFile(myDir)
Call SetSystemCursor(newhcurs, OCR_NORMAL)
End Sub

Public Sub Command2Exe()
Call SetSystemCursor(tempCurs, OCR_NORMAL)
End Sub
---------------------------------------------------------

Ensuite, j'ai légèrement adapté la version que Raymond a publiée sur son site pour supporter tous les Windows, et intégrer le code
ci-dessus.

Dans le formulaire, aucun changement pour les évènements sur clic ou sur souris déplacée.

Le module standard:

Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" _
(ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Declare Function CopyIcon Lib "user32" (ByVal hIcon As Long) As Long
Public Declare Function GetCursor Lib "user32" () As Long
Public Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" _
(ByVal lpFileName As String) As Long
Public Declare Function SetCursor Lib "user32" (ByVal hCursor As Long) As Long
Public Declare Function SetSystemCursor Lib "user32" (ByVal hcur As Long, ByVal id As Long) As Long
Private Const OCR_NORMAL As Long = 32512

Private tempCurs As Long
Private saveCurs As Long
Private saveInfo As Boolean

Public Sub Curseur_Main()

Dim Fichier As String
Dim lDir As Long

'sauver le curseur actuel
saveInfo = True
tempCurs = GetCursor()
saveCurs = CopyIcon(tempCurs)

Fichier = Space(255)
lDir = GetWindowsDirectory(Fichier, 255)
Fichier = Left$(Fichier, lDir) & "Cursorsharrow.cur"
tempCurs = LoadCursorFromFile(Fichier)
Call SetSystemCursor(tempCurs, OCR_NORMAL)

End Sub

Public Sub Curseur_Normal()

Dim Fichier As String
Dim lDir As Long

If saveInfo = False Then
saveInfo = True
tempCurs = GetCursor()
saveCurs = CopyIcon(tempCurs)
End If

'remettre le curseur par défaut
Call SetSystemCursor(saveCurs, OCR_NORMAL)

'forcer un curseur particulier
' Fichier = Space(255)
' lDir = GetWindowsDirectory(Fichier, 255)
' Fichier = Left$(Fichier, lDir) & "Cursorsarrow_m.cur"
' tempCurs = LoadCursorFromFile(Fichier)
' Call SetSystemCursor(tempCurs, OCR_NORMAL)

End Sub
---------------------------------------------------------------------------
Vous êtes encore là ????????????? :-))))))

Mais j'ai l'impression que le problème, c'est que le premier évènement qui se produit est souris déplacée sur la section détail, et
que le curseur standard n'a pas été sauvegardé.

C'est intéressant, hein ? vous avez envie de chercher, hein ?

J-Pierre
Avatar
Anor
salut,

J-Pierre :
| Bonsoir,
|
| Bon, grâce à Raymond et au site
| http://www.mentalis.org/apilist/apilist.php, j'ai bien avancé, mais
| je bloque, voilà où j'en suis. Désolé, y'a pas mal de code à
| copier/coller si ça vous intéresse.
[...]
| Vous êtes encore là ????????????? :-))))))

oui ;-)
|
| Mais j'ai l'impression que le problème, c'est que le premier
| évènement qui se produit est souris déplacée sur la section détail,
| et que le curseur standard n'a pas été sauvegardé.
|
| C'est intéressant, hein ? vous avez envie de chercher, hein ?

Pas vraiment envie de chercher...
Si j'ai bien compris, tu cherches à avoir le curseur "main"
lorsque tu survoles certains objets, c'est ça ?

Quel type d'objets ?
Autre chose que Etiquette ou Bouton ?
Parce que pour ces 2 objets là, tu as la possibilité de mettre un espace
dans la propriété hyperlink (à manipuler avec précautions dans les mde et/ou
sur le bouton de sortie de l'application, je ne sais plus dans quel cas ça génère un message
désagréable...)

Sinon, logipro utilise souvent le curseur main dans ses applis, tu peux regarder celles qui sont
livrées avec le
fichier .cur


--
à+
Arnaud
--------------------------------------------------
Avant toute chose : http://users.skynet.be/mpfa/
Access Memorandum - http://memoaccess.free.fr
## Réponses souhaitées sur ce forum, merci. ##
--------------------------------------------------
Avatar
J-Pierre
Bonsoir Anor,

Oui, tu as bien compris. Et apparemment, tu as été le seul assez patient !!!!!!!!

Et tu as raison, je pourrais utiliser la propriété hyperlink, mais je voudrais le faire en modifiant le curseur, pour savoir faire,
tout simplement.

Je suis allé sur le site de Logipro, tout au moins sur la page accessible depuis la chartre MPFA, rien vu qui ressemble à un
fichier.cur.....

J-Pierre

"Anor" <http://memoaccess.free.fr/anor/email.htm> a écrit dans le message de news:
salut,

J-Pierre :
| Bonsoir,
|
| Bon, grâce à Raymond et au site
| http://www.mentalis.org/apilist/apilist.php, j'ai bien avancé, mais
| je bloque, voilà où j'en suis. Désolé, y'a pas mal de code à
| copier/coller si ça vous intéresse.
[...]
| Vous êtes encore là ????????????? :-))))))



Avatar
Anor
re.

J-Pierre :
| Bonsoir Anor,
|
| Oui, tu as bien compris. Et apparemment, tu as été le seul assez
| patient !!!!!!!!
|
| Et tu as raison, je pourrais utiliser la propriété hyperlink, mais je
| voudrais le faire en modifiant le curseur, pour savoir faire, tout
| simplement.
|
| Je suis allé sur le site de Logipro, tout au moins sur la page
| accessible depuis la chartre MPFA, rien vu qui ressemble à un
| fichier.cur.....
|
| J-Pierre

Dans mes fichiers j'ai quelques exemples :
- La base de Laurent Moilneu moi_Access2HTML.mda (site plus disponible)
- La base AccWebFaqv9.mdb de mvps.org
http://www.mvps.org/access/downloads/accwebfaq-10-10-00-A9.zip
- La base Notification de ....logipro !!
http://www.logicielappui.com/tips/AccXP_Notification.zip
- La base EzTwainXP.mdb de...logipro !! http://www.logicielappui.com/tips/AccXP_ImageScan.zip

--
à+
Arnaud
--------------------------------------------------
Avant toute chose : http://users.skynet.be/mpfa/
Access Memorandum - http://memoaccess.free.fr
## Réponses souhaitées sur ce forum, merci. ##
--------------------------------------------------
Avatar
J-Pierre
Voilà, j'ai fait des progrès.

Evènement sur ouverture du formulaire, je sauvegarde l'handle du curseur.
Ensuite, soit j'affiche la petite main, soit je restaure le curseur initial.

Il reste encore un petit problème, pendant l'évènement ouverture du formulaire, le cursuer est un sablier, je sauvegarde donc un
sablier et restaure un sablier....Il ne reste plus qu'à trouver le bon moment pour faire ça.

Maintenant que le problème d'Emilie est réglé, et dès que celui d'Anne le sera, je suis persuadé que vous allez vous précipitez.....

Voilà le code du module standard modifié:
-----------------------------------------------
Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" _
(ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Declare Function CopyIcon Lib "user32" (ByVal hIcon As Long) As Long
Public Declare Function GetCursor Lib "user32" () As Long
Public Declare Function LoadCursorFromFile Lib "user32" Alias "LoadCursorFromFileA" _
(ByVal lpFileName As String) As Long
Public Declare Function SetCursor Lib "user32" (ByVal hCursor As Long) As Long
Public Declare Function SetSystemCursor Lib "user32" (ByVal hcur As Long, ByVal id As Long) As Long
Private Const OCR_NORMAL As Long = 32512

Private tempCurs As Long
Private saveCurs As Long
Private IconCurs As Long
Private saveInfo As Boolean

Public Sub Curseur_Main()

Dim Fichier As String
Dim lDir As Long

Fichier = Space(255)
lDir = GetWindowsDirectory(Fichier, 255)
Fichier = Left$(Fichier, lDir) & "Cursorsharrow.cur"
tempCurs = LoadCursorFromFile(Fichier)
Call SetSystemCursor(tempCurs, OCR_NORMAL)

End Sub

Public Sub Curseur_Normal()

Dim Fichier As String
Dim lDir As Long
Dim codeRet As Long

'remettre le curseur par défaut
tempCurs = CopyIcon(IconCurs)
codeRet = SetSystemCursor(tempCurs, OCR_NORMAL)

End Sub

Public Sub Curseur_Init() ' appelé sur évènement ouverture du formulaire

IconCurs = GetCursor()

End Sub
--------------------------------------------------

J-Pierre
Avatar
J-Pierre
Anor, j'ai regardé les différents exemples, mais ça ne correspond pas (ou plus) au problème. Eux, à des moments précis, ils décident
de sauver un curseur, de le modifier, de le restaurer.

Nous, il faudrait trouver le moment adéquat (quand le curseur est une flèche standard), pour le sauvegarder

Je sais, je suis tâtillon, pour ne pas dire psycho-rigide

J-Pierre
Avatar
Anor
Bonjour,

Là aussi, je laisse la main (en curseur of course ;-))

--
à+
Arnaud
--------------------------------------------------
Avant toute chose : http://users.skynet.be/mpfa/
Access Memorandum - http://memoaccess.free.fr
## Réponses souhaitées sur ce forum, merci. ##
--------------------------------------------------

J-Pierre :
| Anor, j'ai regardé les différents exemples, mais ça ne correspond pas
| (ou plus) au problème. Eux, à des moments précis, ils décident de
| sauver un curseur, de le modifier, de le restaurer.
|
| Nous, il faudrait trouver le moment adéquat (quand le curseur est une
| flèche standard), pour le sauvegarder
|
| Je sais, je suis tâtillon, pour ne pas dire psycho-rigide
|
| J-Pierre