Equivalent de #WM_LBUTTONDOWN sous linux
Publié : mer. 12/mai/2010 16:16
Salut.
Je résume le début de conversation d'un autre post avec G-Rom :
.
J'ai donc Loadé un sprite de curseur pour combler le problème, mais quand j'ai vu le lag, j'ai lâché l'affaire
.
Voici un exemple de la doc concernant apparemment la souris : 2ème exemple : SDL_MOUSEBUTTONDOWN qui a peut-être le même effet que #WM_LBUTTONDOWN enfin, je sais pas si après on se sert de : event.button.x et event.button.y pour savoir si c'est le bouton gauche ou droite qui a été enfoncé.
En tout cas j'espère que ça fonctionnera sur le même principe que #WM_LBUTTONDOWN c'est à dire avec le pointeur de la souris présente.
J'ai trouvé un code de Faith que j'ai réduit.Mais pour l'instant c'est "SDL_Delay_(4000)" qui permet de maintenir la fenêtre ouverte.
Donc, aurais-tu un bout de code montrant la boucle des évènements avec la SDL combinée à la boucle des évènements de PB.
Avec aussi la gestion des clics de souris.
Bye.
Je résume le début de conversation d'un autre post avec G-Rom :
Geo Trouvpatou a écrit :Je convertissais la vieille version du RPG de Comtois à mes minutes perdues où il y avait une structure POINT, mais bon, dans la suite de son code, je viens de voir :Alors je sais pas si sous Linux ça va continuer.Code : Tout sélectionner
If Event = #WM_LBUTTONUP BoutonGauche = 0 ElseIf Event = #WM_LBUTTONDOWN Or BoutonGauche = 1
Il me semble qu'on peut detecter les clics gauches et droits en Pb, mais je ne sais pas si Event = #WM_LBUTTONUP sous-entend la même chose.
J'ai perdu plus de 30mn à essayer de reproduire le même effet que "#WM_LBUTTONDOWN" avec la lib "Mouse" et j'ai réussi à faire que cela fonctionne (presque) pareil, ensuite j'ai testé ça dans le vrai code et ç'est là que je me suis aperçu de la différence, c'est qu'avec #WM_LBUTTONDOWN, cela gère les clics du pointeur de la souris qui est présent alors qu'avec "MouseButton(#PB_MouseButton_Left)" et compagnie, le pointeur de la souris n'est pas présentG-Rom a écrit :tu as accès à l'api SDL sous linux , n'oublie pas.
y a des tutos partout pour SDL

J'ai donc Loadé un sprite de curseur pour combler le problème, mais quand j'ai vu le lag, j'ai lâché l'affaire

J'ai déjà suivit rapidou les 1er tuto du SDZ concernant la SDL.G-Rom a écrit :tu as accès à l'api SDL sous linux , n'oublie pas.
y a des tutos partout pour SDL
Voici un exemple de la doc concernant apparemment la souris : 2ème exemple : SDL_MOUSEBUTTONDOWN qui a peut-être le même effet que #WM_LBUTTONDOWN enfin, je sais pas si après on se sert de : event.button.x et event.button.y pour savoir si c'est le bouton gauche ou droite qui a été enfoncé.
En tout cas j'espère que ça fonctionnera sur le même principe que #WM_LBUTTONDOWN c'est à dire avec le pointeur de la souris présente.
J'ai trouvé un code de Faith que j'ai réduit.
Code : Tout sélectionner
; Faith : http://www.purebasic.fr/english/viewtopic.php?f=15&t=28555&start=0
EnableExplicit
#SCREEN_WIDTH = 640
#SCREEN_HEIGHT = 480
#SCREEN_BPP = 32
Global *screen.SDL_Surface
If OpenLibrary(0, "libSDL.so")
Else
MessageRequester("Error","Can't Open SDL Library", 0)
End
EndIf
Procedure.i Main()
If SDL_Init_(#SDL_INIT_EVERYTHING) >= 0
*screen = SDL_SetVideoMode_(#SCREEN_WIDTH, #SCREEN_HEIGHT, #SCREEN_BPP, #SDL_SWSURFACE)
If *screen
SDL_WM_SetCaption_("Hello World", #Null)
SDL_Delay_(4000) ; Grace à ça que la fenêtre reste ouverte.
Else
MessageRequester("error","")
EndIf
SDL_Quit_()
Else
MessageRequester("ERROR","Can't initialise SDL")
EndIf
ProcedureReturn 0
EndProcedure
Main()
Donc, aurais-tu un bout de code montrant la boucle des évènements avec la SDL combinée à la boucle des évènements de PB.
Avec aussi la gestion des clics de souris.
Bye.