Page 1 sur 1

déplacer une fenetre sans bordure

Publié : lun. 18/févr./2008 1:16
par venom
bonjour,

voila je souhaiterai déplacer une fenetre sasn bordure en appuiant sur une imagegadget mais je ne trouve pas :?.

Code : Tout sélectionner

;- Window Constants
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
Enumeration
  #Image_0
EndEnumeration
chemain$ = Left(GetHomeDirectory(), 3)

  If OpenWindow(#Window_0, 216, 0, 600, 300, "New window ( 0 )",  #PB_Window_BorderLess)
    If CreateGadgetList(WindowID(#Window_0))
     If LoadImage(#Image_0, chemain$+"WINDOWS\Bulles de savon.bmp")
      ImageGadget(#Image_0, 10, 10, 256, 256, ImageID(#Image_0))
     EndIf 
      
    EndIf
  EndIf

  Repeat
   EventID = WaitWindowEvent()
    If EventID = #PB_Event_Gadget 
      Select EventGadget()
      
      EndSelect
    EndIf
  Until EventID = #PB_Event_CloseWindow
d'avance merci



@++

Publié : lun. 18/févr./2008 1:20
par poshu
je suis en plaine réinstallation donc j'ai pas PB, mais bon, je crois que je:
_vérifierais le déplacement de la souris à chaque cycle si le bouton est enfoncé.
_resizewindow() (je crois que c'est ca. mais j'ai pas la doc sous la main)

Publié : lun. 18/févr./2008 1:32
par Backup
poshu a écrit :je suis en plaine réinstallation donc j'ai pas PB, mais bon, je crois que je:
_vérifierais le déplacement de la souris à chaque cycle si le bouton est enfoncé.
_resizewindow() (je crois que c'est ca. mais j'ai pas la doc sous la main)
non ce n'est pas ce qu'il veut !!

il veut pouvoir deplacer la fenetre tant qu'on clique sur un gadget !!

le probleme qui se pose, c'est que le gadget recupere les events, du coup impossible d'envoyer un

Code : Tout sélectionner

Case #WM_LBUTTONDOWN ; on recupere l'evenement d'un click souris gauche
      SendMessage_(hwnd, #WM_NCLBUTTONDOWN, #HTCAPTION, 0) ; ceci fait suivre la fenetre avec la souris

puisque l'évènement en cours concerne le gadget pas le bouton de la souris !!

sinon je lui avait proposé cela , mais bien sur la on bouge la fenêtre
si appuis sur le bouton gauche de la souris, mais aucun rapport avec un gadget !! :)
(le bouton droit ou la touche ESC fait quitter)

Code : Tout sélectionner

; German forum:
; Author: Danilo
; Date: 18. April 2003
#Fenetre=0
#stop=88 ; on creer un evenement pour quitter !!!
hwnd = OpenWindow(#Fenetre, 200, 200, 300, 300,  "...",#PB_Window_BorderLess)
AddKeyboardShortcut(#Fenetre,#PB_Shortcut_Escape, #stop) ; ici on relie le numero d'evenement (88) a la touche escape !!
Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      End
    Case #WM_LBUTTONDOWN ; on recupere l'evenement d'un click souris gauche
      SendMessage_(hwnd, #WM_NCLBUTTONDOWN, #HTCAPTION, 0) ; ceci fait suivre la fenetre avec la souris
    Case #WM_LBUTTONUP ; on a relaché le bouton souris
      Debug "clic"
    Case #WM_RBUTTONDOWN ; on recupere l'evenement d'un click souris gauche
      End
    Case #PB_Event_Menu ; on a cree un numero d'evenement clavier (menu), on pourra quitter le prg grace a esc !!
      Select  EventMenu()
        Case #stop 
          End 
      EndSelect 
  EndSelect
ForEver 

Publié : lun. 18/févr./2008 10:07
par venom
c'est bon j'ai réussi je savais bien que sa n'etait pas si compliquer :lol:
heureusement que je sauvegarde des PB'S un peut partout. d'ailleurs faudra que je range tout sa.
bref:

Code : Tout sélectionner

;- Window Constants
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
Enumeration
  #Image_0
EndEnumeration
chemain$ = Left(GetHomeDirectory(), 3)

  If OpenWindow(#Window_0, 216, 0, 600, 300, "New window ( 0 )",  #PB_Window_BorderLess)
    If CreateGadgetList(WindowID(#Window_0))
     If LoadImage(#Image_0, chemain$+"WINDOWS\Bulles de savon.bmp")
      ImageGadget(#Image_0, 10, 10, 256, 256, ImageID(#Image_0))
     EndIf
     
    EndIf
  EndIf

  Repeat
   EventID = WaitWindowEvent()
    If EventID = #PB_Event_Gadget
      Select EventGadget()
       
       Case #Image_0
        SendMessage_(WindowID(#Window_0), #WM_NCLBUTTONDOWN, #HTCAPTION ,0)
        
      EndSelect
    EndIf
  Until EventID = #PB_Event_CloseWindow

@++

Publié : lun. 18/févr./2008 10:41
par Backup
je ne comprends pas !! hier , j'ai fait exactement ça sur mon ordi , pour te sortir une solution, et ça n'a pas voulu faire 8O :lol: :lol:

bon j'ai ajouté l'event click droit pour quitter, histoire de gérer plusieurs type d'évent !! :)
ça Marche bien , Merci pour le code, je le met en conserve :)

Code : Tout sélectionner

;- Window Constants
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
Enumeration
  #Image_0
EndEnumeration
chemin$ = Left(GetHomeDirectory(), 3)

If OpenWindow(#Window_0, 216, 0, 600, 300, "New window ( 0 )",  #PB_Window_BorderLess)
  If CreateGadgetList(WindowID(#Window_0))
    If LoadImage(#Image_0, chemin$+"WINDOWS\Bulles de savon.bmp")
      ImageGadget(#Image_0, 10, 10, 256, 256, ImageID(#Image_0))
    EndIf
    
  EndIf
EndIf

Repeat 
  Select  WaitWindowEvent() ; un event se prepare ??
      ; *************** c'est un event de gadget ***********************
    Case #PB_Event_Gadget 
      Select EventGadget() 
        Case #Image_0 ; le gadget #Image_0  renvoi un event
          SendMessage_(WindowID(#Window_0), #WM_NCLBUTTONDOWN, #HTCAPTION ,0) 
      EndSelect
      ; **************** c'est un event de bouton souris  ********************** 
    Case #WM_RBUTTONDOWN ; on recupere l'evenement d'un click souris droit
      End 
  EndSelect
  
  
Until EventID = #PB_Event_CloseWindow

Publié : lun. 18/févr./2008 15:11
par poshu
J'aurais fait un callback, je suis presque sur que ca aurait marché. Je réinstalle pure dans la journée et je ferais un test