Page 1 sur 1

Window Child et button right

Publié : mar. 02/juin/2009 2:02
par kernadec
Bonjour
j'ai un ptit souci avec la mouse et une fenêtre child
je voulais la déplacer avec le click droit appuyé,
mais après pas mal temps et diverses combinaisons.
je n'ai pas réussi faire fonctionner ce mode avec le click droit.
peut être qu'il y a une astuce ou un problème avec cette fonction.
si quelqu'un connais la solution, merci d'avance.

on peut aussi utiliser le click 3 de la mollette pour le déplacement
pour garder les pops menu click droit

cordialement

Code : Tout sélectionner

hWnd0=OpenWindow(0,0,0,600,400,"Parent Child #PB_Window_BorderLess",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  CreateGadgetList(WindowID(0))
  hBrush0 = CreateSolidBrush_(RGB(100, 100, 100)) 
  SetClassLong_(hWnd0, #GCL_HBRBACKGROUND, hBrush0) 

hWnd1=OpenWindow(1, 100, 100, 300 , 200, "Child", #PB_Window_BorderLess)
  CreateGadgetList(WindowID(1))
  hBrush1 = CreateSolidBrush_(RGB(255, 255, 255)) 
  SetClassLong_(hWnd1, #GCL_HBRBACKGROUND, hBrush1) 
  SetParent_(WindowID(1), WindowID(0))

Repeat 
  Event=WindowEvent() 
    Select Event 
       Case #PB_Event_CloseWindow 
          End 
       Case #WM_LBUTTONDOWN 
          ;SendMessage_(hwnd1,#WM_NCLBUTTONDOWN,#HTCAPTION, 0) 
          SendMessage_(hWnd1, #WM_SYSCOMMAND, #SC_MOVE + #HTCAPTION, 0) 
      
       Case #WM_RBUTTONDOWN  
          Debug "Click Right"
                         ; ne fonctionne pas non plus lol??
          SendMessage_(hWnd1, #WM_SYSCOMMAND, #SC_MOVE + #HTCAPTION, 0) 
                                  ;
         ;SendMessage_(hwnd1,#WM_NCRBUTTONDOWN,#HTCAPTION, 0) 
    EndSelect
     
ForEver    

Re: Window Child et button right

Publié : mar. 02/juin/2009 16:46
par gnozal
kernadec a écrit :je n'ai pas réussi faire fonctionner ce mode avec le click droit.
Ben non.
SendMessage_(hwnd1,#WM_NCLBUTTONDOWN,#HTCAPTION, 0) simule un clic gauche [#WM_NCLBUTTONDOWN] sur la barre de titre [#HTCAPTION] tout en ayant déjà le bouton gauche appuyé [Case #WM_LBUTTONDOWN]. C'est comme çà qu'on déplace une fenêtre.
Si on fait un clic droit sur la barre de titre, on obtient le menu système (lorsque on relache le bouton de la souris).

Publié : mar. 02/juin/2009 21:41
par kernadec
bonjour gnozal

ok pour la première version, je m'incline,
j'ai trouvé sur le forum une autre ligne de constantes,
je viens de l'ajouté à ce code et il donne le même résultat!!!
est ce les pour mêmes raisons que le premier ?

merci de ton aide

cordialement

Publié : mer. 03/juin/2009 11:18
par gnozal
A mon avis HTCAPTION n'est pas supporté par WM_SYSCOMMAND.

Cet exemple (un peu compliqué...) semble fonctionner :

Code : Tout sélectionner

; 
; Move Child Windows With Right Click 
; 
hWnd0=OpenWindow(0,0,0,600,400,"Parent",#PB_Window_SystemMenu | #PB_Window_ScreenCentered |#WS_CLIPCHILDREN) 
hBrush0 = CreateSolidBrush_(RGB(100, 100, 100)) 
SetClassLong_(hWnd0, #GCL_HBRBACKGROUND, hBrush0) 

hWnd1=OpenWindow(1, 100, 100, 300 , 200, "Child", #PB_Window_BorderLess) 
hBrush1 = CreateSolidBrush_(RGB(255, 255, 255)) 
SetClassLong_(hWnd1, #GCL_HBRBACKGROUND, hBrush1) 
SetParent_(WindowID(1), WindowID(0)) 

Repeat 
  Event=WaitWindowEvent(100) 
  Select Event 
    Case #PB_Event_CloseWindow 
      End 
    Case #WM_LBUTTONDOWN 
      SendMessage_(hWnd1,#WM_NCLBUTTONDOWN,#HTCAPTION, 0) 
    Case #WM_RBUTTONDOWN 
      GetWindowRect_(hWnd1, @Rectangle.RECT) 
      GetCursorPos_(@Curseur.POINT) 
      If PtInRect_(@Rectangle, Curseur\y << 32 + Curseur\x) 
        GetWindowRect_(hWnd0, @Rectangle0.RECT) 
        ; A adapter en fonction des caractéristiques de la fenêtre 
        RelX =  Rectangle0\left - Rectangle\left + Curseur\x + GetSystemMetrics_(#SM_CXDLGFRAME) 
        RelY = Rectangle0\top - Rectangle\top + Curseur\y + GetSystemMetrics_(#SM_CYCAPTION) + GetSystemMetrics_(#SM_CXDLGFRAME) 
        ; 
        WinX = Curseur\x - RelX 
        WinY = Curseur\y - RelY 
        ResizeWindow(1, WinX, WinY, #PB_Ignore, #PB_Ignore) 
        MovingWindow = #True 
      EndIf 
    Case #WM_RBUTTONUP
      MovingWindow = #False 
  EndSelect 
  ; 
  ; 
  If MovingWindow
    GetCursorPos_(@Curseur.POINT) 
    WinX = Curseur\x - RelX 
    WinY = Curseur\y - RelY 
    ResizeWindow(1, WinX, WinY, #PB_Ignore, #PB_Ignore) 
  EndIf 
  ; 
  ; 
ForEver

Publié : mer. 03/juin/2009 20:56
par kernadec
bonjour

Trop Fort..

merci gnozal

Publié : jeu. 04/juin/2009 7:43
par kernadec
bonjour
je me suis permis d'adapter les codes du soldat inconnu et de gnozal
pour faire un exemple de dessin dans la fenêtre child avec une partie du tracer caché
par la fenêtre parent, le click droit appuyer permet de visualiser le tracer
réalisé au delà de la fenêtre parent,
ou de charger une image dans la fenêtre child plus grande que la fenêtre parent.
ceci permet une ergonomie de manipulation click droit et d'intervention click gauche

on peut aussi utiliser le click molette "MBUTTON" pour garder le click droit en pop menu

cordialement

Code : Tout sélectionner

; Version de PB : 4.30  et en ;;;; 420
:
; Auteur : Le Soldat Inconnu 
;
; Explication du programme :
; Pour faire des programmes de test rapidement, 
; il ne reste qu'a rajouter les gadgets et la gestion des évènements.
:
; Auteur : gnozal 
; pour le mode deplacement fenetre child click droit
;
;
Global X_Depart.l, Y_Depart.l, X_Fin.l, Y_Fin.l
coBack1=255:coBack2=255:coBack3=255         ;fond blanc
cofront1=0:cofront2=0:cofront3=0            ;crayon
Procedure Cercle0()
  x2 = Abs(Pow(X_Fin - X_Depart, 2))
  y2 = Abs(Pow(Y_Fin- Y_Depart, 2))
  Radius = Sqr(x2 + y2)
  x2=X_Fin-X_Depart
  y2=Y_Fin-Y_Depart
  Circle(X_Depart,Y_Depart,1,RGB(cofront1,cofront2,cofront3))
  Circle(X_Depart,Y_Depart,Radius,RGB(cofront1,cofront2,cofront3))
EndProcedure
Procedure line0()
  LineXY(X_Depart, Y_Depart, X_Fin, Y_Fin, RGB(cofront1,cofront2,cofront3))
EndProcedure
; Création de la fenêtre et de la GadgetList
hWnd0=OpenWindow(0,0,0,600,400,"Parent",#PB_Window_SystemMenu | #PB_Window_ScreenCentered |#WS_CLIPCHILDREN)
   ; CreateGadgetList(WindowID(0))  ################# PB420
  hBrush0 = CreateSolidBrush_(RGB(128, 128, 128))
  SetClassLong_(hWnd0, #GCL_HBRBACKGROUND, hBrush0)
hWnd1=OpenWindow(1, 0, 0, 1200 , 800, "Child", #PB_Window_BorderLess|#PB_Window_Invisible)
   ; CreateGadgetList(WindowID(1))  ################# PB420
  hBrush1 = CreateSolidBrush_(RGB(255, 255, 255))
  SetClassLong_(hWnd1, #GCL_HBRBACKGROUND, hBrush1)
  SetParent_(WindowID(1), WindowID(0))
  
  CreateImage(0, WindowWidth(1),WindowHeight(1)) ; Image de ce qui est fixe
  CreateImage(1, WindowWidth(1),WindowHeight(1)) ; image de ce qui est en cours dêtre dessiné
 
  ImageGadget(0,0, 0, WindowWidth(1),WindowHeight(1), ImageID(1))
 CopyImage(0,1)
 StartDrawing(WindowOutput(1))
  FillArea(0,0,RGB(coBack1,coBack2,coBack3), RGB(coBack1,coBack2,coBack3))  ;couleur de fond de l'image
 StopDrawing()
 HideWindow(1,0)
Repeat
  Event = WaitWindowEvent()
  Select Event
    Case #PB_Event_Gadget
     Select EventType()
       Case #WM_LBUTTONDOWN
       Case 0 ; Evenement sur l'image
          ; On commence le dessin
          X_Depart = WindowMouseX(1)
          Y_Depart = WindowMouseY(1)
          Dessin_Commence = 1
     EndSelect
      Case #WM_MOUSEMOVE
       If Dessin_Commence
        StartDrawing(ImageOutput(1))
          DrawingMode(4)                ; obtenir un cercle ou autre cloture vide
          DrawImage(ImageID(0), 0, 0)
          FillArea(0,0,RGB(coBack1,coBack2,coBack3), RGB(coBack1,coBack2,coBack3))  ;couleur de fond de l'image
          X_Fin = WindowMouseX(1)
          Y_Fin = WindowMouseY(1)
          ;######### commandes dessin 
           Cercle0()
           ;line0()
          ;###########################
         StopDrawing()
        SetGadgetState(0, ImageID(1))
       EndIf
      Case #WM_LBUTTONUP ; On termine le dessin
        Dessin_Commence = 0
        ; On redessine sur l'image 0 le dessin final
       StartDrawing(ImageOutput(0))
        DrawingMode(4)                  ; obtenir un cercle ou autre cloture vide
        FillArea(0,0,RGB(coBack1,coBack2,coBack3), RGB(coBack1,coBack2,coBack3))   ;couleur de fond de l'image
        X_Fin = WindowMouseX(1)
        Y_Fin = WindowMouseY(1)
        ;######### dessin definif 
         Cercle0()
         ;line0()
        ;###########################
       StopDrawing()
      Case #WM_RBUTTONDOWN
        GetWindowRect_(hWnd1, @Rectangle.RECT)
        GetCursorPos_(@Curseur.POINT)
         ;If PtInRect_(@Rectangle, Curseur\x , Curseur\y)       ; #################  PB420
         If PtInRect_(@Rectangle, Curseur\y << 32 + Curseur\x)  ; #################  PB430
           GetWindowRect_(hWnd0, @Rectangle0.RECT)
           
           ; A adapter en fonction des caractéristiques de la fenêtre
           
           RelX =  Rectangle0\left - Rectangle\left + Curseur\x + GetSystemMetrics_(#SM_CXDLGFRAME)
           RelY = Rectangle0\top - Rectangle\top + Curseur\y + GetSystemMetrics_(#SM_CYCAPTION) + GetSystemMetrics_(#SM_CXDLGFRAME)
           WinX = Curseur\x - RelX
           WinY = Curseur\y - RelY
           ResizeWindow(1, WinX, WinY, #PB_Ignore, #PB_Ignore)
           MovingWindow = #True
         EndIf
      Case #WM_RBUTTONUP
          MovingWindow = #False
    EndSelect
    If MovingWindow
      GetCursorPos_(@Curseur.POINT)
      WinX = Curseur\x - RelX
      WinY = Curseur\y - RelY
      ResizeWindow(1, WinX, WinY, #PB_Ignore, #PB_Ignore)
    EndIf
Until Event = #PB_Event_CloseWindow
End

Publié : mar. 07/juil./2009 18:21
par kernadec
Bonsoir
dans la série fenêtre Child il y à le zoom,
il fonctionne bien avec une fenêtre sans bord, c'était le but recherché,
pour les fenêtres child normale, je n'ai pas cherché à aller plus loin.

Code : Tout sélectionner

;#######################################################
;#####    Kernadec 07/2009 ZoomWindowsChild       ######
;#######################################################
Procedure.w MouseWheelDelta()
  xxw.w = ((EventwParam()>>16)&$FFFF)
  ProcedureReturn -(xxw / 100)
EndProcedure
hWnd0=OpenWindow(0,100,100,600,400,"ZoomWindowsChild",#PB_Window_SystemMenu|#WS_CLIPCHILDREN)
 ;CreateGadgetList(WindowID(0))
 hBrush0 = CreateSolidBrush_(RGB(100, 100, 100))
 SetClassLong_(hWnd0, #GCL_HBRBACKGROUND, hBrush0)
 hWnd1=OpenWindow(1, 150, 100, 300 , 200, "Child", #PB_Window_BorderLess)
 ;CreateGadgetList(WindowID(1))
 hBrush1 = CreateSolidBrush_(RGB(255, 255, 255))
 SetClassLong_(hWnd1, #GCL_HBRBACKGROUND, hBrush1)
 SetParent_(WindowID(1), WindowID(0))
 wx.l=WindowX(1):wy.l=WindowY(1)
 wl.l=WindowWidth(1):wh.l=WindowHeight(1)
 dx.l=WindowX(1)-(WindowX(1)-WindowX(0)-3)
 dy.l=WindowY(1)-(WindowY(1)-WindowY(0)-29)
Repeat
 Event=WaitWindowEvent()
   	If event = #WM_MOUSEWHEEL
      xmx=xmx+(MouseWheelDelta() *3)     ;3/2 rapport largeur hauteur windows
      ymy=ymy+(MouseWheelDelta() *2)
      ResizeWindow(1,(wx-dx)-xmx,(wy-dy)-ymy,wl+(xmx*2),wh+(ymy*2))
     EndIf
 Select Event
   Case #PB_Event_CloseWindow
    End
   Case #WM_LBUTTONDOWN
     SendMessage_(hWnd1,#WM_NCLBUTTONDOWN,#HTCAPTION, 0)
     dx.l=wx-(WindowX(1)-WindowX(0)-3):dy.l=wy-(WindowY(1)-WindowY(0)-29)
     wl.l=WindowWidth(1):wh.l=WindowHeight(1):xmx=0:ymy=0
  EndSelect
ForEver
cordialement

Publié : mar. 07/juil./2009 21:56
par Le Soldat Inconnu
même genre de truc que Gnozal, mais sans API de partout

il ne reste que le SetParent_(
Obligatoire car l'option parent dans OpenWindow( ne fait pas pareil

Code : Tout sélectionner

OpenWindow(0, 0, 0, 600, 400, "Parent Child #PB_Window_BorderLess", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SetWindowColor(0, $808080)
OpenWindow(1, 100, 100, 300, 200, "Child", #PB_Window_BorderLess)
SetWindowColor(1, $FFFFFF)

SetParent_(WindowID(1), WindowID(0))

Repeat
  
  If ClicDroit ; si le bouton droit de la souris est appuyé, on déplace la fenêtre en même temps que la souris
    Event = WindowEvent()
    ResizeWindow(1, WindowMouseX(0) - PositionX, WindowMouseY(0) - PositionY, #PB_Ignore, #PB_Ignore)
  Else
    Event = WaitWindowEvent()
  EndIf
  
  Select Event
    Case #PB_Event_CloseWindow
      End
      
    Case #WM_RBUTTONDOWN
      ClicDroit = 1
      PositionX = WindowMouseX(1)
      PositionY = WindowMouseY(1)
    Case #WM_RBUTTONUP ; on relève le bouton droit de la souris
      ClicDroit = 0
      
  EndSelect
  
ForEver

Publié : mer. 08/juil./2009 5:24
par kernadec
Bonjour Soldat Inconnu

Merci, pour ce code génial.

Comme d’habitude, vous avez ce don de résoudre d’une manière si simple
les choses compliquées, ce qui souvent nous fait dire, mais pourquoi je n’y ai pas pensé…
Seulement voila, les personnes comme vous, sont des ARTISTES.
Il joue si facilement et si simplement de leur instrument, qu’il nous donnent l’impression
que l’on va pouvoir en faire autant.
Mais là, c’est la claque!, car pour en faire autant, il faudra beaucoup de temps et de travail
et surtout une aptitude que seul quelques individus possède..

Encore merci.

Pour terminer voila une petite citation d’un inconnu aussi, comme par hasard!.
« Il y a plus inconnu encore que le Soldat Inconnu : sa femme! »

Ps : Pour le code de précèdent du zoom de la fenêtre child, c’est pour du dessin de lignes en homothétie,
qui vont se redessiner en fonction des nouvelles dimensions de la fenêtre.

suite a ce code, j'ai fais un ptit mixage des deux codes pour faire une soeur jumelle

Code : Tout sélectionner

Global wxzm.l,wyzm.l,wlzm.l,whzm.l,dxzm.l,dyzm.l
Procedure.w MouseWheelDelta()
  xxw.w = ((EventwParam()>>16)&$FFFF)
  ProcedureReturn -(xxw / 100)
EndProcedure

OpenWindow(0, 0, 0, 600, 400, "Parent Child #PB_Window_BorderLess", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SetWindowColor(0, $808080)
OpenWindow(1, 100, 100, 300, 200, "Child", #PB_Window_BorderLess)
SetWindowColor(1, $FFFFFF)

SetParent_(WindowID(1), WindowID(0))

 wxzm=WindowX(1):wyzm=WindowY(1)
 wlzm=WindowWidth(1):whzm=WindowHeight(1)
 dxzm=WindowX(1)-(WindowX(1)-WindowX(0)-3)
 dyzm=WindowY(1)-(WindowY(1)-WindowY(0)-29)
 
Repeat
	
	If ClicDroit ; si le bouton droit de la souris est appuyé, on déplace la fenêtre en même temps que la souris
		Event = WindowEvent()
		ResizeWindow(1, WindowMouseX(0) - PositionX, WindowMouseY(0) - PositionY, #PB_Ignore, #PB_Ignore)
	  dxzm=wxzm-(WindowX(1)-WindowX(0)-3):dyzm=wyzm-(WindowY(1)-WindowY(0)-29)
    wlzm=WindowWidth(1):whzm=WindowHeight(1):xmx=0:ymy=0
	Else
		Event = WaitWindowEvent()
	EndIf
		If event = #WM_MOUSEWHEEL
      xmx=xmx+(MouseWheelDelta() *3)     ;3/2 rapport largeur hauteur windows
      ymy=ymy+(MouseWheelDelta() *2)
      ResizeWindow(1,(wxzm-dxzm)-xmx,(wyzm-dyzm)-ymy,wlzm+(xmx*2),whzm+(ymy*2))
     EndIf
	Select Event
		Case  #PB_Event_CloseWindow
			End
		Case #WM_RBUTTONDOWN
			ClicDroit = 1
			PositionX = WindowMouseX(1)
			PositionY = WindowMouseY(1)
		Case #WM_RBUTTONUP ; on relève le bouton droit de la souris
			ClicDroit = 0
	EndSelect
ForEver

Cordialement.

Publié : mer. 08/juil./2009 12:45
par Kwai chang caine
Trop cool tous ces codes 8O
On dirait un combat de titans :D

Un super code...... "PAF" un autre .... "BIM" encore un autre........

Et attrape celui la..... "PIF" les gadgets on joue avec, comme quand j'etais petit, et que j'allais acheter la revue du meme nom, bavant et la langue pendante :D

Bravo a tous 8)

Publié : mer. 08/juil./2009 17:38
par Backup
@kernadec :

j'ai modifié un peu ta façon de bouger a fenetre
il y a un peu plus simple :)

(bon c'est une Api mais bon , on s'en fou des Linuxien :lol: )

Code : Tout sélectionner

Global wxzm.l,wyzm.l,wlzm.l,whzm.l,dxzm.l,dyzm.l
Procedure.w MouseWheelDelta()
  xxw.w = ((EventwParam()>>16)&$FFFF)
  ProcedureReturn -(xxw / 100)
EndProcedure

OpenWindow(0, 0, 0, 600, 400, "Parent Child #PB_Window_BorderLess", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SetWindowColor(0, $808080)
OpenWindow(1, 100, 100, 300, 200, "Child", #PB_Window_BorderLess)
SetWindowColor(1, $FFFFFF)

SetParent_(WindowID(1), WindowID(0))

wxzm=WindowX(1):wyzm=WindowY(1)
wlzm=WindowWidth(1):whzm=WindowHeight(1)
dxzm=WindowX(1)-(WindowX(1)-WindowX(0)-3)
dyzm=WindowY(1)-(WindowY(1)-WindowY(0)-29)
 
Repeat
  Event=WaitWindowEvent()
  Select Event
      
    Case #WM_LBUTTONDOWN
      SendMessage_(WindowID(1), #WM_NCLBUTTONDOWN, #HTCAPTION, 0) ; by Dobro : juste ça , ça suffit pour bouger la fenetre ;o)
    Case  #WM_MOUSEWHEEL
      xmx=xmx+(MouseWheelDelta() *3)     ;3/2 rapport largeur hauteur windows
      ymy=ymy+(MouseWheelDelta() *2)
      ResizeWindow(1,(wxzm-dxzm)-xmx,(wyzm-dyzm)-ymy,wlzm+(xmx*2),whzm+(ymy*2))
    Case  #PB_Event_CloseWindow
      End
    Case #WM_RBUTTONDOWN
      ClicDroit = 1
      PositionX = WindowMouseX(1)
      PositionY = WindowMouseY(1)
    Case #WM_RBUTTONUP ; on relève le bouton droit de la souris
      ClicDroit = 0
  EndSelect
ForEver

Publié : mer. 08/juil./2009 18:40
par PAPIPP
Bonjour à tous
Merci DOBRO
Mais une petite erreur sur sendmessage_(windowID(1).....

Code : Tout sélectionner

Global wxzm.l, wyzm.l, wlzm.l, whzm.l, dxzm.l, dyzm.l
Procedure.w MouseWheelDelta()
  xxw.w = ((EventwParam()>>16) & $FFFF)
  ProcedureReturn -(xxw/100)
EndProcedure

OpenWindow(0, 0, 0, 600, 400, "Parent Child #PB_Window_BorderLess", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SetWindowColor(0, $808080)
OpenWindow(1, 100, 100, 300, 200, "Child", #PB_Window_BorderLess)
SetWindowColor(1, $FFFFFF)

SetParent_(WindowID(1), WindowID(0))

wxzm = WindowX(1) : wyzm = WindowY(1)
wlzm = WindowWidth(1) : whzm = WindowHeight(1)
dxzm = WindowX(1)-(WindowX(1)-WindowX(0)-3)
dyzm = WindowY(1)-(WindowY(1)-WindowY(0)-29)

Repeat
  Event = WaitWindowEvent()
  Select Event
      
    Case #WM_LBUTTONDOWN
      SendMessage_(WindowID(1), #WM_NCLBUTTONDOWN, #HTCAPTION, 0) ; by Dobro : juste ça , ça suffit pour bouger la fenetre ;o)
    Case #WM_MOUSEWHEEL
      xmx = xmx + (MouseWheelDelta()*3)     ;3/2 rapport largeur hauteur windows
      ymy = ymy + (MouseWheelDelta()*2)
      ResizeWindow(1, (wxzm-dxzm)-xmx, (wyzm-dyzm)-ymy, wlzm + (xmx*2), whzm + (ymy*2))
    Case #PB_Event_CloseWindow
      End
    Case #WM_RBUTTONDOWN
      ClicDroit = 1
      PositionX = WindowMouseX(1)
      PositionY = WindowMouseY(1)
    Case #WM_RBUTTONUP ; on relève le bouton droit de la souris
      ClicDroit = 0
  EndSelect
ForEver


déplacement avec le bouton gauche de lasouris
A+

Publié : mer. 08/juil./2009 19:02
par kernadec
bonsoir Dobro

j'ai pas compris? ou ca ne marche pas chez moi.
mais le post avant celui du soldat Inconnu faisait déjà un truc comme
çà avec le clic gauche et la fenêtre Child qui se déplace et zoom avec l' Api

KCC merci, mais c'est trop d'honneur, je ne suis là que pour
partager, apprendre, et pour m'entretenir les méninges

mais, me comparer au Soldat Inconnu n'est pas flatteur pour lui
soyons réaliste, je n'aurais jamais ce niveau, il est trop fort,
je dirais même intouchable!

j'ai un grand respect pour les personnes qui viennent sur ce forum
c'est pourquoi je les remercient, ainsi que Dobro et toute l'équipe
de pseudos qui donne de leurs temps sur ce forum .

cordialement

Publié : mer. 08/juil./2009 19:16
par Backup
j'ai mis cela : ;)

Code : Tout sélectionner

Case #WM_LBUTTONDOWN
      SendMessage_(WindowID(1), #WM_NCLBUTTONDOWN, #HTCAPTION, 0) ; by Dobro : juste ça , ça suffit pour bouger la fenetre ;o)

a la place de ton :

Code : Tout sélectionner

	If ClicDroit ; si le bouton droit de la souris est appuyé, on déplace la fenêtre en même temps que la souris
		Event = WindowEvent()
		ResizeWindow(1, WindowMouseX(0) - PositionX, WindowMouseY(0) - PositionY, #PB_Ignore, #PB_Ignore)
	  dxzm=wxzm-(WindowX(1)-WindowX(0)-3):dyzm=wyzm-(WindowY(1)-WindowY(0)-29)
    wlzm=WindowWidth(1):whzm=WindowHeight(1):xmx=0:ymy=0
	Else
		Event = WaitWindowEvent()
	EndIf

c'est plus simple non ? :)


@PAPIPP : je pensai qu'il fallais deplacer la fenetre exterieur :)
Merci pour la précision
j'ai modifié mon code en consequence :)

Publié : mer. 08/juil./2009 19:44
par kernadec
merci, Dobro et PAPIPP

mais je crois qu'on est tous un peu dans le coltard
je pense que vous devriez reprendre les trois codes avant celui de KCC
parce que je ne comprend plus rien?


il me semble que les deux boutons de la souris cohabite mal
car il y avait un code clic droit et ensuite un code clic gauche
pour ce cas de figure d'où la métaphore de la soeur jumelle.

seul Mr Gnozal a réussi a les faire cohabiter les deux boutons

Cordialement