Page 2 sur 2

Re: Curseur personnalisé

Publié : mer. 25/juin/2014 12:20
par Ar-S
Modification du code :

Chargement de curseur systeme ET externe animé
Tout marche au poil

Code : Tout sélectionner

; Changement de curseur Par Ar-S - PB 5.22 LTS
; basé sur un code de Froggerprogger


; Initialisation des données
Declare ChangeCursor(IdGadgetFenetre, IDcurseur=0)


Global.b clic
Clic = 0

; On charge les curseurs
C_Fleche	= 	LoadCursor_(0, #IDC_ARROW)	; Fichier curseur système
C_Main		=	LoadCursor_(0, #IDC_HAND)		; Fichier curseur système
C_Aide 		= 	LoadCursor_(0, #IDC_HELP)		; Fichier curseur système
C_Carret		=	LoadCursor_(0, #IDC_IBEAM)	; Fichier curseur système
C_Croix		=	LoadCursor_(0, #IDC_CROSS)	; Fichier curseur système
C_Non		=	LoadCursor_(0, #IDC_NO)			; Fichier curseur système
; Fichier animé curseur externe => http://www.cursors-4u.com/cursor/2012/01/01/nico-robin-one-piece.html
; Path à modifier selon votre convenance
C_fifille		=	LoadCursorFromFile_(GetCurrentDirectory()+ "ani1161.ani")  

; Ouverture de la fenêtre
hWnd = OpenWindow(1, 10, 10, 400, 200, "", #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered)
Bouton1   = ButtonGadget(1, 210, 10, 100, 25, "Clic moi dessus")


; boucle
Repeat
  Event = WaitWindowEvent(2)
  Eg = EventGadget()
  
  Select Event
  		Case #PB_Event_Gadget
		  	Select Eg
		  		Case 1 ; (le bouton)
		  					Clic + 1
		  					If Clic = 6
		  						Clic = 0	
		  					EndIf
		  					
		  					Select Clic
		  						
		  						Case 1
		  							ChangeCursor(hWnd, C_Croix)
		  							ChangeCursor(Bouton1, C_Croix)
		  							Debug "Croix sur bouton et fenêtre"
		  						Case 2
		  							ChangeCursor(hWnd, C_Aide)
		  							Debug "Aide sur fenêtre"
		  						Case 3
		  							ChangeCursor(hWnd, C_Non)
		  							Debug "Fleche Interdit sur fenêtre"
		  						Case 4
		  							ChangeCursor(Bouton1, C_Carret)
		  							Debug "Carret sur bouton"
		  						Case 5	
		  							ChangeCursor(Bouton1, C_fifille)	
		  							ChangeCursor(hWnd, C_fifille)
		  							Debug "Fifille animée sur bouton et fenêtre"
		  						Default
		  							ChangeCursor(Bouton1, C_Fleche)			
		  							ChangeCursor(hWnd, C_Fleche)	
		  							Debug "Fleche sur bouton et fenêtre"
		  						
		  					EndSelect
		  					
		  					
		  					
		  			EndSelect		
  		
  
  EndSelect
Until Event = #PB_Event_CloseWindow

; On décharge les curseurs
DestroyCursor_(C_Fleche)
DestroyCursor_(C_Main)
DestroyCursor_(C_Aide)
DestroyCursor_(C_Carret)
DestroyCursor_(C_Croix)
DestroyCursor_(C_Non)
DestroyCursor_(C_fifille)
End


; Procedure de changement du curseur
Procedure ChangeCursor(IdGadgetFenetre, IDcurseur=0)
; by Ar-S
	If SetClassLong_(IdGadgetFenetre, #GCL_HCURSOR, IDcurseur)
		ProcedureReturn 1
	Else
		ProcedureReturn 0
	EndIf		
EndProcedure



Re: Curseur personnalisé

Publié : mer. 25/juin/2014 12:24
par falsam
Mince tu ne fournis pas la "Fifille animée sur bouton et fenêtre" :mrgreen:

Re: Curseur personnalisé

Publié : mer. 25/juin/2014 12:42
par TazNormand
J'ai la même chose avec ton code, et ce qui est "mararnt" c'est que je ne l'ai pas avec celui d'Ar-S

Pour la fifille, il y a le lien dans le source, Falsam : Fifille

Re: Curseur personnalisé

Publié : mer. 25/juin/2014 13:33
par Micoute
Bonjour et merci énormément à tous les trois, ça fonctionne très bien, mais j'ai un problème avec GetCurrentDirectory(), mais en le supprimant, ça fonctionne quand même !

En même temps, j'ai appris qu'il y avait bien d'autres curseurs que la flèche, la main ou la poutre, enfin les classiques, il y a aussi les curseurs d'ancrage comme le Nord-Sud ou le Eest-Ouest, etc...

Merci encore.

Re: [Résolu] Curseur personnalisé

Publié : mer. 25/juin/2014 14:08
par TazNormand
Bon, j'ai trouvé mon problème de "clipping", grâce à Ar-S ; c'est à cause de l'appel de ma fonction dans la boucle avec le SetCursor_(). Il faut utiliser le SetClassLong_() pour définir le type de curseur suivant le contexte (écran, bouton, autre).

Re: Curseur personnalisé

Publié : mer. 25/juin/2014 15:16
par Ar-S
Micoute a écrit :mais j'ai un problème avec GetCurrentDirectory(), mais en le supprimant, ça fonctionne quand même !
Si ta source est dans c:\PBcode\moncode.pb le GetCurrentDirectory() doit te renvoyer c:\PBcode\
Si ça ne marche pas c'est que tu dois pas créer l'exe de compilation dans le même dossier.
Dans l'IDE de PB vas dans le menu compilateur/Option du compilateur et dans l'onglet compiler/exécuter coche Créer l’exécutable temporaire dans le répertoire des sources.

ça doit venir de là ;)

Re: [Résolu] Curseur personnalisé

Publié : mer. 25/juin/2014 16:16
par falsam
En tout cas Micoute, merci d'avoir poser ce sujet qui nous permet de faire un tour d'horizon sur la customisation du pointeur de la souris :)

Re: [Résolu] Curseur personnalisé

Publié : mer. 25/juin/2014 17:04
par Ar-S
Tout à fait :D

Re: Curseur personnalisé

Publié : mer. 25/juin/2014 20:06
par Micoute
Ar-S a écrit :Si ta source est dans c:\PBcode\moncode.pb le GetCurrentDirectory() doit te renvoyer c:\PBcode\
Si ça ne marche pas c'est que tu dois pas créer l'exe de compilation dans le même dossier.
Ma source est bien dans le même répertoire que le curseur que je veux charger, c'est bien à cause de ça que je n'ai pas compris, mais c'est surtout depuis que j'ai la version 5.30 que j'ai entre autres, ce genre de problème. Peut-être devrais-je ré-installer la version ?
falsam a écrit :En tout cas Micoute, merci d'avoir poster ce sujet qui nous permet de faire un tour d'horizon sur la customisation du pointeur de la souris
Si je peux être utile, si ça vous plaît, ça me plaît ! :D

Re: [Résolu] Curseur personnalisé

Publié : mer. 25/juin/2014 21:18
par Ar-S
Ah je ne peux pas te dire, je n'ai pas testé la 5.30, je reste sur la LTS. J'essayerai la 5.30 uniquement si j'en ai le besoin.
Installe autant de version de PB que tu le souhaites mais ne te cantonne pas aux beta, ça t'évitera ce genre de soucis.