détection souris dans fenetre ou bureau

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Kwai chang caine a écrit : Mais si on met un waitwindowevent alors la ça marche plus,
waitwindowevent() prends un nouveau parametre !!
Evenement = WaitWindowEvent([Minuteur])
Minuteur c'est le temps d'attente ! ça remplace le Delay() :)
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Test

Message par beauregard »

Kwai chang caine a écrit :
par contre pour un jeu ou tout autre opération graphique, la commande Delay est à bannir...
Je ne savais pas, il faut dire que je ne fais jamais de jeu, je suis serieux moi :lol:
faire un jeu requiert de la persévérance( au début c'est rigolo, hum, mais après on fronce les sourcils).
Kwai chang caine a écrit :Le bleme c'est que si on met pas un delay, j'ai l'impression que ça occupe pas mal le proce, a cause du windowevent()
Contrairement à la certitude, l'impression n'est pas confortable.
Ton code fonctionne très bien, même en désactivant le Delay. Je t'invite donc à connaître un moment d'émotion ;), en cliquant ici( en dehors du boulot biensûr) :
http://www.nitrome.com/games/headcase/ et une fois le jeu flash chargé, avec la guillerette musique d'intro, tu lance ton petit code avec le delay désactivé...

Tu peux même pousser plus loin le test en dirigeant le personage de gauche à droite( avec les touches de direction), tout en jouant avec le curseur de la souris et la fenêtre que tu as sobrement nommé test souris.

Et tout cela tourne sans accroc. Pour une application graphique lourde, tu va naturellement attribuer toutes les ressources de la machine à ton jeu, houps, programme graphique.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

C'etais de l'humour, meme si je n'en fais jamais je sais que c'est un vrai travail :wink:
Je sais que contrairement a ce que tout le monde peu croire (enfin ceux qui n'y connaissent rien) le jeu est une galere non seulement pour le programmeur, mais aussi pour son cheval (le pc).

En fin de compte, ce qui est drole pour le client est hard pour le vendeur, ce qui prouve encore la véracité du vieil adage :
Le malheur des uns, fait le bonheur des autres :wink:
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Ton code, à peine modifié, et qui fonctionne.
La fenêtre est agrandie quand le curseur est dessus, y compris quand il est au dessus d'un gadget contenu dans la fenêtre ou dans un autre gadget.
Sinon, la fenêtre est rétrécie.


Code : Tout sélectionner

;- Window Constants
Enumeration
  #Window_0
EndEnumeration
ExamineDesktops()
DesktopName(0)
#GA_ROOT = 2

window = OpenWindow(#Window_0, 0, 0, 600, 100, "test souris",  #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(#Window_0))
  
  ButtonGadget(8, 10,  10, 200, 20, "reduire")
  
  PanelGadget(9, 10, 30, 200, 100)
  AddGadgetItem(9, -1, "Onglet 1")
  ButtonGadget(10, 10, 15, 80, 24,"Bouton 1")
  
  AddGadgetItem(9, -1, "Onglet 2")
  ButtonGadget(11, 10, 15, 80, 24,"Bouton 2")
  
  CloseGadgetList()
EndIf


SetTimer_(#Null, 1, 50, #Null)
Repeat
  EventID = WaitWindowEvent()
  
  Select EventID
    Case #WM_TIMER
      HObjet = WindowFromPoint_(DesktopMouseX(), DesktopMouseY())
      HRoot = GetAncestor_(HObjet, #GA_ROOT)
      
      If  HObjet = WindowID(#Window_0) Or HRoot = WindowID(#Window_0); On regarde le gadget qui est sous la souris
        ResizeWindow(#Window_0, WindowX(#Window_0), WindowY(#Window_0), 600, 200)
      Else
        ResizeWindow(#Window_0, WindowX(#Window_0), WindowY(#Window_0), 600, 100)
      EndIf
      
  EndSelect
  
  If EventID = #PB_Event_Gadget
    Select EventGadget()
      
    EndSelect
  EndIf
Until EventID = #PB_Event_CloseWindow
Répondre