Page 1 sur 2
Demande de précision sur l'utilisation des curseurs Windows
Publié : mer. 24/nov./2010 19:15
par boddhi
Salut à tous !
Voilà, ça fait (très) longtemps que je bute (et que je laisse cela de côté

) un problème sur les curseurs de la souris sous Windows.
J'ai décidé de prendre le taureau par les cornes et de résoudre enfin ce problème (enfin pour moi c'en est un

!!)
J'avais à l'époque étudié le topic ci-dessous et essayé de l'adapter à mes besoins :
http://www.purebasic.fr/french/viewtopi ... lit=cursor
Mon but est d'afficher, sur une fenêtre "disabled", un curseur IDC_WAIT afin de faire comprendre à l'utilisateur qu'un processus est en cours.
Mais voilà, lorsqu'un on affecte un curseur à une fenêtre, c'est uniquement sur le fond de cette dernière que le curseur modifié devient actif.
Le curseur n'est pas valable sur ses gadgets.
Cela sous-entendrait-il qu'il faille nécessairement affecter également le curseur à chaque gadget, (ainsi qu'à certains autres types de contrôles tels que les en-têtes de colonnes des ListIcon, ...) ou y aurait-il un moyen d'affecter un curseur de souris à une fenêtre et à l'ensemble de ses gadgets, quels qu'ils soient, de manière plus simple ???
Merci.
Re: Demande de précision sur l'utilisation des curseurs Wind
Publié : mer. 24/nov./2010 19:41
par Backup
.............................
Re: Demande de précision sur l'utilisation des curseurs Wind
Publié : mer. 24/nov./2010 20:04
par boddhi
@Dobro
C'est bien pour cela que j'avais fini par laisser tomber !!!
A partir de ton code :
Code : Tout sélectionner
OpenWindow(0,100,100,500,500,"Essai curseur",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ListIconGadget(0,50,50,400,400,"ListIcon",380)
hcur=LoadCursor_(0,#IDC_WAIT)
Debug hdc
SetCursor_(hcur )
Repeat
Evenmt=WaitWindowEvent()
Until Evenmt=#PB_Event_CloseWindow
Aucun changement du curseur
Alors que :
Code : Tout sélectionner
OpenWindow(0,100,100,500,500,"Essai curseur",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ListIconGadget(0,50,50,400,400,"ListIcon",380)
SetClassLong_(WindowID(0),#GCL_HCURSOR,LoadCursor_(0,#IDC_WAIT))
Repeat
Evenmt=WaitWindowEvent()
Until Evenmt=#PB_Event_CloseWindow
Le curseur change sur le fond de la fenêtre mais pas sur le gadget...
et
Code : Tout sélectionner
OpenWindow(0,100,100,500,500,"Essai curseur",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ListIconGadget(0,50,50,400,400,"ListIcon",380)
SetClassLong_(WindowID(0),#GCL_HCURSOR,LoadCursor_(0,#IDC_WAIT))
SetClassLong_(GadgetID(0),#GCL_HCURSOR,LoadCursor_(0,#IDC_WAIT))
Repeat
Evenmt=WaitWindowEvent()
Until Evenmt=#PB_Event_CloseWindow
Le curseur change sur le fond de la fenêtre et sur l'intérieur du ListIcon mais pas sur l'en-tête de colonne...

Re: Demande de précision sur l'utilisation des curseurs Wind
Publié : mer. 24/nov./2010 20:20
par Patrick88
ajoute
juste après la définition du gadget et là ça marche
Re: Demande de précision sur l'utilisation des curseurs Wind
Publié : mer. 24/nov./2010 20:52
par boddhi
@Dobro et Patrick88
L'exemple ci-dessous fonctionne...
Code : Tout sélectionner
Procedure Traitement()
DisableWindow(0,#True)
For Compteur=1 To 20
If Compteur&1
hcur=LoadCursor_(0,#IDC_CROSS)
Else
hcur=LoadCursor_(0,#IDC_SIZEALL)
EndIf
SetCursor_(hcur)
ExamineDirectory(0,"c:\windows","*.*")
While NextDirectoryEntry(0)
Debug DirectoryEntryName(0)
;WindowEvent()
Wend
FinishDirectory(0)
Next
AddGadgetItem(0,-1,"Traitement terminé")
DisableWindow(0,#False)
EndProcedure
OpenWindow(0,100,100,500,500,"Essai curseur",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ListIconGadget(0,50,50,400,400,"ListIcon",380)
ButtonGadget(1,210,470,80,22,"Traitement")
Repeat
Evenmt=WaitWindowEvent()
Select Evenmt
Case #PB_Event_Gadget
If EventGadget()=1:Traitement():EndIf
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Mais dans mon code, le résultat escompté ne se produit pas...
Je vais essayer de trouver d'où cela vient...
Merci à vous deux en tout cas.
Re: Demande de précision sur l'utilisation des curseurs Wind
Publié : mer. 24/nov./2010 21:05
par boddhi
Je ne voudrais pas jouer les lourdingues

mais y a quand même un truc qui me chiffonne..
Dans le code suivant
Code : Tout sélectionner
OpenWindow(0,100,100,500,500,"Essai curseur",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ListIconGadget(0,50,50,400,400,"ListIcon",380)
hcur=LoadCursor_(0,#IDC_WAIT)
Debug hdc
SetCursor_(hcur )
Repeat
Evenmt=WaitWindowEvent()
Until Evenmt=#PB_Event_CloseWindow
On peut simplement souhaiter que le curseur change d'apparence sans pour autant que la fenêtre ou son(ses) gadget(s) soi(en)t désactivé(s)..
Pourquoi ne fonctionne-t-il pas alors ?
Re: Demande de précision sur l'utilisation des curseurs Wind
Publié : mer. 24/nov./2010 21:08
par Backup
..........................
Re: Demande de précision sur l'utilisation des curseurs Wind
Publié : mer. 24/nov./2010 21:38
par boddhi
@Dobro
Autre approche intéressante qui fonctionne (Mais diable ! Pourquoi faire simple quand on peut faire plus compliqué

)
Note :
n'est pas utile puisque pas de callback... (un ';' oublié je suppose

)
Merci de ton aide.
Re: Demande de précision sur l'utilisation des curseurs Wind
Publié : mer. 24/nov./2010 21:44
par boddhi
@Dobro
Du coup ton code m'a donné une idée. Si on inclut le
SetCursor_() dans la boucle, comme ceci, là ça fonctionne...:
Code : Tout sélectionner
OpenWindow(0,100,100,500,500,"Essai curseur",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ListIconGadget(0,50,50,400,400,"ListIcon",380)
hcur=LoadCursor_(0,#IDC_WAIT)
Repeat
SetCursor_(hcur )
Evenmt=WaitWindowEvent()
Until Evenmt=#PB_Event_CloseWindow
Tu crois que c'est normal ?
Re: Demande de précision sur l'utilisation des curseurs Wind
Publié : mer. 24/nov./2010 21:45
par Backup
boddhi a écrit :
n'est pas utile puisque pas de callback... (un ';' oublié je suppose

)
Merci de ton aide.
oui
question : pourquoi te connecte tu en mode invisible ?
Re: Demande de précision sur l'utilisation des curseurs Wind
Publié : mer. 24/nov./2010 21:50
par boddhi
Dobro a écrit :question : pourquoi te connecte tu en mode invisible ?
Ah oui, tiens j'avais jamais fait gaffe...
Pourtant, je ne coche jamais la case 'cacher le statut en ligne'...
Je vais aller voir du côté du profil... peut-être que cela vient de là ???
Re: Demande de précision sur l'utilisation des curseurs Wind
Publié : mer. 24/nov./2010 21:55
par boddhi
boddhi a écrit :Je vais aller voir du côté du profil... peut-être que cela vient de là ???
Je confirme...
Re: Demande de précision sur l'utilisation des curseurs Wind
Publié : mer. 24/nov./2010 21:58
par boddhi
Arggh, je suis vert maintenant !!!

Re: Demande de précision sur l'utilisation des curseurs Wind
Publié : mer. 24/nov./2010 22:40
par Backup
boddhi a écrit :Arggh, je suis vert maintenant !!!

Comment ça t'es vert ?
Re: Demande de précision sur l'utilisation des curseurs Wind
Publié : mer. 24/nov./2010 22:49
par falsam
Depuis qu'il n'est plus en mode connecté invisible, il vient de se rendre compte qu'il ressemble à Hulk (Bon ok, elle est vraiment nulle)