Changer le curseur de la souris au survol d'un Gadget

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
ChrisR
Messages : 221
Inscription : sam. 14/févr./2015 16:20

Re: Changer le curseur de la souris au survol d'un Gadget

Message par ChrisR »

Merci :)
Et une autre version, sans API avec un Canva Container

Code : Tout sélectionner

Global Window_1
Global Canvas_0, Button_0

Window_1 = OpenWindow(#PB_Any, 0, 0, 200, 70, "", #PB_Window_SystemMenu)
Canvas_0 = CanvasGadget(#PB_Any, 50, 20, 100, 25, #PB_Canvas_Container)
SetGadgetAttribute(Canvas_0, #PB_Canvas_Cursor, #PB_Cursor_Hand)
Button_0 = ButtonGadget(#PB_Any, 0, 0, 100, 25, "MonBouton")
CloseGadgetList()

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      End
      
    Case #PB_Event_Gadget
      Select EventGadget()
        Case Button_0
          If GetGadgetAttribute(Canvas_0, #PB_Canvas_Cursor) = #PB_Cursor_Hand
            SetGadgetAttribute(Canvas_0, #PB_Canvas_Cursor, #PB_Cursor_Busy)
          Else
            SetGadgetAttribute(Canvas_0, #PB_Canvas_Cursor, #PB_Cursor_Hand)
          EndIf
          
    EndSelect
  EndSelect
ForEver
Edit: et pour le curseur invisible au dessus d'un gadget, remplacer #PB_Cursor_Hand par #PB_Cursor_Invisible
Dernière modification par ChrisR le mer. 22/mars/2017 17:54, modifié 3 fois.
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: Changer le curseur de la souris au survol d'un Gadget

Message par Shadow »

Merci mais non, bien que ce code soit simple et court, il change le curseur
de toute une famille de même gadget et pas juste le gadget voulue :)

Si tu utilise ce code pour par exemple un bouton, tous les boutons
auront le même curseur, moi je ne veux pas :)

Maintenant ya surement une astuce.
Merci pour tous.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Changer le curseur de la souris au survol d'un Gadget

Message par Ar-S »

Sans API ce n'est pas possible. Donc ce sera forcément un code compliqué (comme l'exemple du Soldat Inconnu) et il ne sera pas cross plateform.
Mais celui que ChrisR te propose pourra te servir dans le cas ou tu crées une interface entière dans un canvas.. En créant tes gadgets..
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Mesa
Messages : 1093
Inscription : mer. 14/sept./2011 16:59

Re: Changer le curseur de la souris au survol d'un Gadget

Message par Mesa »

Shadow a écrit :Merci mais non, bien que ce code soit simple et court, il change le curseur
de toute une famille de même gadget et pas juste le gadget voulue :)

Si tu utilise ce code pour par exemple un bouton, tous les boutons
auront le même curseur, moi je ne veux pas :)

Maintenant ya surement une astuce.
Merci pour tous.
C'est bizarre, le code de ChrisR est pourtant indépendant du type de gadget et du gadget aussi.

Code : Tout sélectionner

Global Window_1
Global Canvas_0, Button_0

Window_1 = OpenWindow(#PB_Any, 0, 0, 200, 270, "", #PB_Window_SystemMenu)
Canvas_0 = CanvasGadget(#PB_Any, 50, 20, 100, 25, #PB_Canvas_Container)
SetGadgetAttribute(Canvas_0, #PB_Canvas_Cursor, #PB_Cursor_Hand)
Button_0 = ButtonGadget(#PB_Any, 0, 0, 100, 25, "MonBouton1")
CloseGadgetList()

Canvas_1 = CanvasGadget(#PB_Any, 50, 60, 100, 25, #PB_Canvas_Container)
SetGadgetAttribute(Canvas_1, #PB_Canvas_Cursor, #PB_Cursor_Cross     )
Button_1 = ButtonGadget(#PB_Any, 0, 0, 100, 25, "MonBouton2")
CloseGadgetList()

Canvas_2 = CanvasGadget(#PB_Any, 50, 100, 100, 25, #PB_Canvas_Container)
SetGadgetAttribute(Canvas_2, #PB_Canvas_Cursor, #PB_Cursor_IBeam    )
String_0 = StringGadget(#PB_Any, 0, 0, 100, 25, "azerty")
CloseGadgetList()
Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      End
      
    Case #PB_Event_Gadget
      Select EventGadget()
        Case Button_0
          If GetGadgetAttribute(Canvas_0, #PB_Canvas_Cursor) = #PB_Cursor_Hand
            SetGadgetAttribute(Canvas_0, #PB_Canvas_Cursor, #PB_Cursor_Busy)
          Else
            SetGadgetAttribute(Canvas_0, #PB_Canvas_Cursor, #PB_Cursor_Hand)
          EndIf
          
        Case Button_1
          If GetGadgetAttribute(Canvas_1, #PB_Canvas_Cursor) = #PB_Cursor_Cross
            SetGadgetAttribute(Canvas_1, #PB_Canvas_Cursor, #PB_Cursor_Denied)
          Else
            SetGadgetAttribute(Canvas_1, #PB_Canvas_Cursor, #PB_Cursor_Cross)
          EndIf
          
          ;Case string_0
          
          
      EndSelect
  EndSelect
ForEver
Shadow
Messages : 1373
Inscription : mer. 04/nov./2015 17:39

Re: Changer le curseur de la souris au survol d'un Gadget

Message par Shadow »

Punaise, c'est sacrément malin comme méthode ChrisR :o
J'avais pas testé :oops:
Merci :D
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Répondre