PureBasic

Forums PureBasic
Nous sommes le Sam 24/Aoû/2019 1:36

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 4 messages ] 
Auteur Message
 Sujet du message: Je suis sur quelle fenêtre ???? (Résolut)
MessagePosté: Lun 22/Avr/2019 10:33 
Hors ligne

Inscription: Jeu 05/Fév/2009 17:58
Messages: 895
J'ai un programme avec deux fenêtres, un peu comme le code ci-dessous.
Je voudrais par un simple survol de la souris savoir quelle fenêtre est survolée. (sans cliquer sur une des fenêtres)
Je patine un peu ou j'ai oublier l'api qui va bien.
Merci d'avance.

Code:
Enumeration 0 ; Id. Fenêtres
      #FENETRE1
      #FENETRE2
EndEnumeration
Enumeration 0 ; Id. Gadgets
      #FEN1_BOUTON
      #FEN1_FERMER
      #FEN2_FERMER
EndEnumeration

If OpenWindow(#FENETRE1, 0, 0, 640, 480, "Fenêtre 1", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
     
     
            ButtonGadget(#FEN1_BOUTON, 5,  5, 100, 22, "Ouvrir Fenêtre 2")
            ButtonGadget(#FEN1_FERMER, 5, 45, 100, 22, "Quitter")
     
     
      Repeat
           
            Evenement.l = WaitWindowEvent()
           
            Select EventWindow()
                       
                        ;=====================================================
                        ;== EVENEMENTS DE LA FENETRE PRINCIPALE
                        ;=====================================================
                       
                  Case #FENETRE1
                       
                        Select Evenement
                                   
                              Case #PB_Event_Gadget
                                   
                                    Select EventGadget()
                                               
                                          Case #FEN1_BOUTON
                                                If OpenWindow(#FENETRE2, 0, 0, 320, 240, "Fenêtre 2", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
                                                  StickyWindow(#FENETRE2 , 1)   
                                                            ButtonGadget(#FEN2_FERMER, 5, 5, 100, 22, "Fermer")
                                                     
                                                EndIf
                                               
                                          Case #FEN1_FERMER
                                                Break
                                               
                                    EndSelect
                                   
                              Case #PB_Event_CloseWindow
                                    Break
                                   
                        EndSelect
                       
                        ;=====================================================
                        ;== EVENEMENTS DE LA FENETRE SECONDAIRE
                        ;=====================================================
                       
                  Case #FENETRE2
                       
                        Select Evenement
                                   
                              Case #PB_Event_Gadget
                                   
                                    If EventGadget() = #FEN2_FERMER
                                          CloseWindow(#FENETRE2)
                                    EndIf
                                   
                              Case #PB_Event_CloseWindow
                                   
                                    CloseWindow(#FENETRE2)
                                   
                        EndSelect
                       
            EndSelect
           
      ForEver
     
EndIf





Dernière édition par MLD le Lun 22/Avr/2019 13:18, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Je suis sur quelle fenêtre ????
MessagePosté: Lun 22/Avr/2019 11:43 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 8739
Petit code de Lunasol (modifié) à adapter

Code:
EnableExplicit

Define CURSOR.q ; this is POINT structure by fact
Define hWnd

Define MyWindow1 = OpenWindow(#PB_Any, 0, 0, 250, 50, "1")
Define MyWindow2 = OpenWindow(#PB_Any, 250, 0, 250, 50, "2")

Repeat
   If WaitWindowEvent(1) = #PB_Event_CloseWindow
      Break
   EndIf
   
   GetCursorPos_(@CURSOR) ; get cursor pos
   hWnd = WindowFromPoint_(CURSOR) ; get window handle under specified cursor pos (excluding hidden/disabled windows)
   
   If hWnd = WindowID(MyWindow1)
      SetActiveWindow(MyWindow1)
   ElseIf hWnd = WindowID(MyWindow2)
      SetActiveWindow(MyWindow2)
   EndIf
   
   Delay(64)
ForEver

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.4x / 5.6x
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
RESIZER GOLD : Mon logiciel de redimensionnement par lot 100% PB


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Je suis sur quelle fenêtre ????
MessagePosté: Lun 22/Avr/2019 11:48 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 16/Oct/2015 18:22
Messages: 309
Localisation: France
Bonjour MLD,

Deux petites remarques pour commencer:
Utilise toujours EnableExplicit au début de tes codes
Réduit le nombre d'espaces générés par la touche tabulation (2 c'est suffisant) pour rendre ton code plus lisible et évite de trop mettre de lignes blanches.

Voici une solution sans API
Code:
EnableExplicit

Enumeration 0 ; Id. Fenêtres
      #FENETRE1
      #FENETRE2
EndEnumeration

Enumeration 0 ; Id. Gadgets
  #FEN1_CANVAS
  #FEN1_BOUTON
  #FEN1_FERMER
  #FEN2_CANVAS
  #FEN2_FERMER
EndEnumeration

Define Evenement.l

If OpenWindow(#FENETRE1, 0, 0, 640, 480, "Fenêtre 1", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  CanvasGadget(#FEN1_CANVAS, 0, 10, 640, 480, #PB_Canvas_Container)
    GadgetToolTip(#FEN1_CANVAS, "Je suis la fenêtre 1")
    ButtonGadget(#FEN1_BOUTON, 5,  5, 100, 22, "Ouvrir Fenêtre 2")
    ButtonGadget(#FEN1_FERMER, 5, 45, 100, 22, "Quitter")
  CloseGadgetList()
  Repeat
    Evenement = WaitWindowEvent()
    Select EventWindow()
      ;=====================================================
      ;== EVENEMENTS DE LA FENETRE PRINCIPALE
      ;=====================================================
      Case #FENETRE1
        Select Evenement
          Case #PB_Event_Gadget
            Select EventGadget()
              Case #FEN1_BOUTON
                If OpenWindow(#FENETRE2, 0, 0, 320, 240, "Fenêtre 2", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
                  CanvasGadget(#FEN2_CANVAS, 0, 10, 640, 480, #PB_Canvas_Container)
                    GadgetToolTip(#FEN2_CANVAS, "Je suis la fenêtre 2")
                    ButtonGadget(#FEN2_FERMER, 5, 5, 100, 22, "Fermer")
                  CloseGadgetList()
                  StickyWindow(#FENETRE2 , 1)
                EndIf
              Case #FEN1_FERMER
                Break
            EndSelect
          Case #PB_Event_CloseWindow
            Break
        EndSelect
      ;=====================================================
      ;== EVENEMENTS DE LA FENETRE SECONDAIRE
      ;=====================================================
      Case #FENETRE2
        Select Evenement
          Case #PB_Event_Gadget
            If EventGadget() = #FEN2_FERMER
              CloseWindow(#FENETRE2)
            EndIf
          Case #PB_Event_CloseWindow
            CloseWindow(#FENETRE2)
        EndSelect
    EndSelect
  ForEver
EndIf
J'utilise simplement CanvasGadget() pour obtenir le résultat.
CAGE

_________________
■ Win10 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 5.70 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Je suis sur quelle fenêtre ????
MessagePosté: Lun 22/Avr/2019 13:16 
Hors ligne

Inscription: Jeu 05/Fév/2009 17:58
Messages: 895
Merci Ar-S et cage

Ar_S je pense que c'est la solution :lol:

Cage

Pour les remarques
1° EnableExplicit n'est absolument pas obligatoire. Ceci vient du Pascal ou il fallait tous "déclarer". Si l'on a de la rigueur avec les noms de variables il n'y a pas de problème.

2° le code n'est pas de moi, mais trouver un jour sur le forum.

3° J'ai oublier de dire que la fenêtre 2 ne peu contenir aucun gadget.

encore merci a vous deux


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 4 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  
cron

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye