déplacer une fenetre sans bordure

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

déplacer une fenetre sans bordure

Message 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



@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Message 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)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 
Avatar de l’utilisateur
venom
Messages : 3138
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Message 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

@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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
Dernière modification par Backup le lun. 18/févr./2008 18:38, modifié 1 fois.
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Message 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
Répondre