Demande de précision sur l'utilisation des curseurs Windows

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Demande de précision sur l'utilisation des curseurs Windows

Message 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.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Demande de précision sur l'utilisation des curseurs Wind

Message par Backup »

.............................
Dernière modification par Backup le dim. 20/mars/2011 13:34, modifié 1 fois.
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Demande de précision sur l'utilisation des curseurs Wind

Message 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...


:( :?:
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Re: Demande de précision sur l'utilisation des curseurs Wind

Message par Patrick88 »

ajoute

Code : Tout sélectionner

DisableGadget(0,#True)
juste après la définition du gadget et là ça marche
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Demande de précision sur l'utilisation des curseurs Wind

Message 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.
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Demande de précision sur l'utilisation des curseurs Wind

Message par boddhi »

Je ne voudrais pas jouer les lourdingues :D 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 ?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Demande de précision sur l'utilisation des curseurs Wind

Message par Backup »

..........................
Dernière modification par Backup le dim. 20/mars/2011 13:34, modifié 1 fois.
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Demande de précision sur l'utilisation des curseurs Wind

Message par boddhi »

@Dobro
Autre approche intéressante qui fonctionne (Mais diable ! Pourquoi faire simple quand on peut faire plus compliqué :lol: )

Note :

Code : Tout sélectionner

Declare WindowCallback( windowid ,message,wParam,lParam)
n'est pas utile puisque pas de callback... (un ';' oublié je suppose :wink: )

Merci de ton aide.
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Demande de précision sur l'utilisation des curseurs Wind

Message 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 ?
Dernière modification par boddhi le mer. 24/nov./2010 21:47, modifié 1 fois.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Demande de précision sur l'utilisation des curseurs Wind

Message par Backup »

boddhi a écrit : n'est pas utile puisque pas de callback... (un ';' oublié je suppose :wink: )

Merci de ton aide.
oui :)

question : pourquoi te connecte tu en mode invisible ?
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Demande de précision sur l'utilisation des curseurs Wind

Message 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à ???
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Demande de précision sur l'utilisation des curseurs Wind

Message par boddhi »

boddhi a écrit :Je vais aller voir du côté du profil... peut-être que cela vient de là ???
Je confirme...
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Demande de précision sur l'utilisation des curseurs Wind

Message par boddhi »

Arggh, je suis vert maintenant !!! :lol: :lol:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Demande de précision sur l'utilisation des curseurs Wind

Message par Backup »

boddhi a écrit :Arggh, je suis vert maintenant !!! :lol: :lol:
Comment ça t'es vert ?
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Demande de précision sur l'utilisation des curseurs Wind

Message 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)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre