Page 1 sur 2

Encore au sujet d'EdorGadget et du pointeur de la souris

Publié : ven. 08/janv./2010 15:00
par pat
Bonjour à tous,
Ne possédant pas pour le moment l'API de Windows, je cherche à connaître la ligne de code qui permettrait de savoir ce que l'utilisateur a sélectionné comme texte dans l'éditeur (EditorGadget).
J'aimerais également savoir comment faire pour changer le pointeur de la souris :
1) en sablier
2) en main pointé du doigt
3) en point d'interrogation
4) en panneau d'interdiction
etc. (bref en avoir quelques-une bien sympa pour mettre dans des programmes).

Merci à vous qui êtes bien documenté au sujet de l'API.

Re: Encore au sujet d'EdorGadget et du pointeur de la souris

Publié : ven. 08/janv./2010 19:19
par Backup
va dans les Tutos en forum débutant
http://www.purebasic.fr/french/viewtopic.php?f=1&t=6664

le tuto numero 15 t'apportera la lumiere ;)

Re: Encore au sujet d'EdorGadget et du pointeur de la souris

Publié : mar. 12/janv./2010 14:40
par pat
Merci pour ta réponse Dobro. C'est parfait pour la souris.
Il ne me reste plus qu'à m'occuper de savoir comment connaître ce que l'utilisateur à sélectionné dans un EditorGadget.

Re: Encore au sujet d'EdorGadget et du pointeur de la souris

Publié : jeu. 14/janv./2010 14:57
par Ar-S
Sans les API si tu trouves, dis le nous, moi je suis preneur ! (mais j'ai comme des doutes)

Re: Encore au sujet d'EdorGadget et du pointeur de la souris

Publié : ven. 15/janv./2010 14:12
par pat
Merci Ar-S pour ta réponse.
Dans le tuto 15 que m'as donné Dobro j'ai trouvé pas mal d'API (sendMessage_, etc.) intéressant au sujet de la souris (changer les pointeurs de la souris, etc.).
Jettes-y un coup d'oeil, tu devrais trouver certaines API.
Mais si tu peux me donner l'API qui permet de savoir ce que l'utilisateur à sélectionné comme texte dans un EditorGadget, je suis preneur également.

Re: Encore au sujet d'EdorGadget et du pointeur de la souris

Publié : ven. 15/janv./2010 14:46
par Ar-S
Oui avec les API y'a pas de soucis, c'est sans que j'ai des soutes :)

Voilà un code de LSI qui répond à ta question

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 4
;
; Explication du programme :
; Modifier un texte dans un StringGadget ou un EditorGadget en partant de la position du curseur

Procedure EditText(Gadget, Type, Text_Start.s, Text_End.s = "")
	; type = 0 : Insertion de texte sur le curseur
	; type = 1 : insertion de texte autour de la sélection
	Protected Debut_Position, Fin_position, Texte.s, Index.l
	Select GadgetType(Gadget)
        Case #PB_GadgetType_String
			SendMessage_(GadgetID(Gadget), #EM_GETSEL, @Debut_Position, @Fin_position)
			Texte = GetGadgetText(Gadget)
			If Type = 0
				Texte = Left(Texte, Debut_Position) + Text_Start + Text_End + Right(Texte, Len(Texte) - Fin_position)
				Debut_Position + Len(Text_Start + Text_End)
				Fin_position = Debut_Position
            Else
				Texte = Left(Texte, Debut_Position) + Text_Start + Mid(Texte, Debut_Position + 1, Fin_position - Debut_Position) + Text_End + Right(Texte, Len(Texte) - Fin_position)
				Debut_Position + Len(Text_Start)
				Fin_position + Len(Text_Start)
            EndIf
			SetGadgetText(Gadget, Texte)
			SendMessage_(GadgetID(Gadget), #EM_SETSEL, Debut_Position, Fin_position)
			SetActiveGadget(Gadget)
			
        Case #PB_GadgetType_Editor
			SendMessage_(GadgetID(Gadget), #EM_GETSEL, @Debut_Position, @Fin_position)
			For Index = 0 To CountGadgetItems(Gadget) - 1
				If Texte <> ""
					Texte + Chr(10)
                EndIf
				Texte + GetGadgetItemText(Gadget, Index)
            Next
			If Type = 0
				Texte = Left(Texte, Debut_Position) + Text_Start + Text_End + Right(Texte, Len(Texte) - Fin_position)
				Debut_Position + Len(Text_Start + Text_End)
				Fin_position = Debut_Position
            Else
				Texte = Left(Texte, Debut_Position) + Text_Start + Mid(Texte, Debut_Position + 1, Fin_position - Debut_Position) + Text_End + Right(Texte, Len(Texte) - Fin_position)
				Debut_Position + Len(Text_Start)
				Fin_position + Len(Text_Start)
            EndIf
			SetGadgetText(Gadget, Texte)
			SendMessage_(GadgetID(Gadget), #EM_SETSEL, Debut_Position, Fin_position)
			SetActiveGadget(Gadget)
			
    EndSelect
EndProcedure


; Création de la fenêtre et de la GadgetList
If OpenWindow(0, 0, 0, 300, 300, "Texte", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget) = 0 Or CreateGadgetList(WindowID(0)) = 0
	End
EndIf

StringGadget(0, 0, 0, 300, 25, "")

EditorGadget(1, 0, 30, 300, 100)

ButtonGadget(2, 0, 150, 300, 25, "Insérer le texte 'Blabla' au l'endroit du curseur")
ButtonGadget(3, 0, 175, 300, 25, "Entourer le texte sélectionné par '<b>' et '</b>'")

Repeat
	Event = WaitWindowEvent()
    
	Select Event
        Case #PB_Event_Menu
			Select EventMenu() ; Menus
					
            EndSelect
			
        Case #PB_Event_Gadget
			Select EventGadget() ; Gadgets
                Case 0 ; String
					Gadget_LostFocus = 0
					Debug "String"
                Case 1 ; Editor
                    Gadget_LostFocus = 1
					Debug "Editor"
                Case 2
					Debug "Insertion"
					EditText(Gadget_LostFocus, 0, "Blabla")
                Case 3
					EditText(Gadget_LostFocus, 1, "<b>", "</b>")
            EndSelect
    EndSelect
    
Until Event = #PB_Event_CloseWindow

End

Re: Encore au sujet d'EdorGadget et du pointeur de la souris

Publié : mer. 20/janv./2010 12:44
par pat
Je remercie encore une fois Ar-S pour son aide plus que précieuse.
Tes codes, je les regarde avec une grande attention.
Et tu me donnes les API qu'il me faut.
Mais comment fais-tu pour avoir tous ces codes API ?
Moi je lutte, c'est le mot, pour obtenir la doc sur les API.
Le grand problème pour moi c'est d'obtenir de la doc et des informations que j'ai besoin car je débute sur PureBasic.
Mais je pense que je devrais pouvoir progresser, déjà grâce à ton aide.
Encore une fois, un grand merci.

Re: Encore au sujet d'EdorGadget et du pointeur de la souris

Publié : mer. 20/janv./2010 14:50
par Ar-S
pat a écrit :Je remercie encore une fois Ar-S pour son aide plus que précieuse.
Tes codes, je les regarde avec une grande attention.
Et tu me donnes les API qu'il me faut.
Mais comment fais-tu pour avoir tous ces codes API ?
Moi je lutte, c'est le mot, pour obtenir la doc sur les API.
Le grand problème pour moi c'est d'obtenir de la doc et des informations que j'ai besoin car je débute sur PureBasic.
Mais je pense que je devrais pouvoir progresser, déjà grâce à ton aide.
Encore une fois, un grand merci.
Pas de secret, c'est simplement que j'ai posé les mêmes questions que toi... avant toi :mrgreen:
Du fofo anglais ou français, j'ai toujours fini par trouver réponse à mes questions. Parfois il faut s'armer de patience mais ça permet de découvrir d'autrs codes en attendant.

Re: Encore au sujet d'EdorGadget et du pointeur de la souris

Publié : jeu. 21/janv./2010 5:17
par bloiiing
pat a écrit : Mais comment fais-tu pour avoir tous ces codes API ?
Moi je lutte, c'est le mot, pour obtenir la doc sur les API.
Essaye ce lien:
http://msdn.microsoft.com/en-us/library ... 85%29.aspx

Si il ne marche pas tu peux télécharger la doc sur l'api en navigant à partir de ce lien qui est donné dans la doc de PB:
http://msdn.microsoft.com/library

C'est comme ça que je l'ai trouvé. Attention c'est un fichier qui fait 1,3 Go

A+

Re: Encore au sujet d'EdorGadget et du pointeur de la souris

Publié : jeu. 21/janv./2010 5:56
par bloiiing
bloiiing a écrit : Essaye ce lien:
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Rectification, avec ce lien tu vas sur la page de téléchargement du sdk windows de ton choix. Ils contiennent la doc de référence de l'api des différentes versions de windows.

http://msdn.microsoft.com/en-us/windows ... 46047.aspx

Voilà, j'espère que c'est ce que tu cherchais
A+

Re: Encore au sujet d'EdorGadget et du pointeur de la souris

Publié : ven. 22/janv./2010 14:17
par pat
Merci à Ar-S et bloiiing pour leur réponse.
Je ne pourrais pas venir sur un site Internet avec téléchargement d'ici quelques jours (voire une semaine ou plus) et donc de vérifier ce que vous m'avez donné mais je vous fais plus que confiance dans ce domaine.
Avant de pouvoir lire ces choses, pourriez-vous me rendre encore un petit service, côté API, comme il se doit.

Je viens bientôt terminer un programme. Mais ce programme comporte des fichiers images que je charge avec LoadImage.
Problème pour moi, comment faire pour que mon programme puisse tourner dans n'importe quel chemin du disque, car je ne connais pas où l'utilisateur pourrait éventuellement le mettre.
J'ai essayé d'utiliser le répertoire courant. Cela marche quand l'utilisateur clique sur le programme EXE mais si je veux mettre mon programme dans le menu Démarrer, bien évidemment le répertoire courant n'étant plus le même, il ne tourne plus.
Il me faudrait l'API qui me permettrait de savoir dans quel chemin du disque mon programme est installé et ainsi il pourrait tourner de n'importe quel endroit.

Heureusement que je peux compter sur vous, votre aide est devenu pour moi indispensable.
D'avance, un grand merci pour la réponse.

Re: Encore au sujet d'EdorGadget et du pointeur de la souris

Publié : ven. 22/janv./2010 15:26
par Ar-S
En début de programme essaye de mettre :

Code : Tout sélectionner

SetCurrentDirectory(GetPathPart(ProgramFilename()))

Re: Encore au sujet d'EdorGadget et du pointeur de la souris

Publié : ven. 22/janv./2010 16:34
par kernadec
bonjour pat
pour le curseur souris, voila!!!
j'avoue l'avoir récupéré sur un forum... mais je sais plus où...

Cordialement

Code : Tout sélectionner

; valeurs possibles pour le curseur :
#IDC_NO = 32648 ; curseur "interdit" (panneau d'interdiction)
#IDC_ARROW = 32512 ; la flèche (le curseur normal)
#IDC_IBEAM = 32513 ; curseur sélection de texte
#IDC_UPARROW = 32516 ; flèche qui pointe vers le haut
#IDC_APPSTARTING = 32650 ; curseur attente (flèche + sablier)
#IDC_WAIT = 32514 ; curseur occupé (sablier)
#IDC_CROSS = 32515 ; curseur précision de la sélection (croix)
#IDC_SIZENWSE = 32642 ; curseur de dimensionnment, pointe le NordOuest et le SudEst
#IDC_SIZENESW = 32643 ; curseur de dimensionnment, pointe le NE et le SO
#IDC_SIZEWE = 32644 ; curseur de dimensionnment, pointe le E et le O
#IDC_SIZENS = 32645 ; curseur de dimensionnment, pointe le N et le S
#IDC_SIZEALL = 32646 ; curseur de déplacement, pointe le N, S, E et O
#IDC_HELP = 32651 ; curseur aide
#IDC_HAND = 32649 ; curseur main

Procedure SetCursor(IdCursor.l) ; modifie le curseur de la fenêtre en cours
  SetClassLong_(WindowID(0), #GCL_HCURSOR, LoadCursor_(0, IdCursor))
EndProcedure



If OpenWindow(0, 200, 200, 400, 200, "Curseur", #PB_Window_SystemMenu)
  
  ; choix du curseur
  SetCursor(#IDC_HAND)
  
  Repeat
    EventID.l = WaitWindowEvent()
  Until EventID = #PB_Event_CloseWindow
  
EndIf

End 

Re: Encore au sujet d'EdorGadget et du pointeur de la souris

Publié : ven. 22/janv./2010 17:23
par Backup
@kernadec : j'avais deja répondu a ça,il me semble...

Re: Encore au sujet d'EdorGadget et du pointeur de la souris

Publié : ven. 22/janv./2010 18:29
par kernadec
bonsoir Dobro

excuse moi, c'est vrai je suis distrait.
mais bon, une version de plus....

Cordialement