Seite 1 von 3

Gadget bewegen per Maus

Verfasst: 18.05.2005 22:41
von Neptunar
Hallö,

meine wenigkeit hat mal wieder ein kleins problem, hab ein paar sachen versucht, doch die funktionieren nicht...

ich möchte ein Gadget mit der maus bewegen, nun könnte ich das mit #WM_MOUSEMOVE machen, aber ich will dass, das Gadget nur sich nach den x und y positionen der maus richtet wenn die linke bzw. primäre maustaste gedrückt wird... ich komm da irgendwie net weiter ;(

mfg Neptunar :)

Verfasst: 18.05.2005 23:07
von Hroudtwolf

Code: Alles auswählen

;Hroudtwolf 2005(c)

If OpenWindow(0, 0, 0, 1024, 740,#PB_Window_SystemMenu | #PB_Window_ScreenCentered , "Move Gadgets")

 
  If CreateGadgetList(WindowID())
    TextGadget (201,100,100,80,20,"test",#pb_text_border)
  EndIf

  Repeat
   
    EventID = WaitWindowEvent()
       
    Select EventID


                         
      Case #PB_EventGadget       
         
        Select EventGadgetID()
       
        EndSelect
                   
    
                 
      Case #WM_LButtonDown
        Left_Button = #TRUE     
                         
      Case #WM_LButtonUp
        Left_Button = #FALSE
               
    
      Case #WM_MOUSEMOVE
        If Left_Button = #TRUE
      

          TextGadget (201,WindowMouseX(),WindowMouseY(),80,20,"test",#pb_text_border)
        EndIf
     
      Case #PB_EventCloseWindow  
        Quit = 1
       
    EndSelect
     
   

   
  Until Quit = 1
 
EndIf

End   

Verfasst: 18.05.2005 23:20
von Neptunar
jo,

so hab ich mir das vorgestellt, ich hatte es einmal mit einer AND verknüpfung versucht aber das funktionierte nicht.

Danke für die schnelle Hilfe.

Aber noch etwas: Wie bekomm ich das flimmern weg o_O

mfg Neptunar :)

Verfasst: 18.05.2005 23:43
von bluejoke
Hi!

Also die Bedingung

Code: Alles auswählen

#WM_LButtonDown AND #WM_MOUSEMOVE
kann natürlich nicht so ganz funzen, aber das müsste doch gehen:

Code: Alles auswählen

#WM_MOUSEMOVE AND Left_Button
bluejoke

EDIT: bezieht sich auf den Code vom Wolf!

Verfasst: 18.05.2005 23:52
von Neptunar
bluejoke hat geschrieben: Also die Bedingung

Code: Alles auswählen

#WM_LButtonDown AND #WM_MOUSEMOVE
kann natürlich nicht so ganz funzen, aber das müsste doch gehen:

Code: Alles auswählen

#WM_MOUSEMOVE AND Left_Button
Also, das geht bei mir irgendwie auch nicht ;)

Verfasst: 19.05.2005 00:04
von Ynnus
Anstatt den Butten jedesmal neu zu Erstellen (was intern Speicher freigeben, Speicher neu reservieren bedeutet) solltest du lieber das vorhandene Gadget verschieben. Entweder mit resizegadget() oder movewindow_().
Dann sollte auch das Flimmern weg sein.
#WM_MOUSEMOVE AND Left_Button
Kann natürlich nicht gehen, denn die Message lautet schließlich nur WM_MOUSEMOVE. In einem Select Case ist da eine AND-Verknüpfung nicht machbar, würd ich mal sagen. Wie soll die Message auch den Wert WM_MOUSEMOVE und gleichzeitig den wert Left_Button annehmen, wenn diese nicht identisch sind?

Verfasst: 19.05.2005 00:09
von Hroudtwolf
Hat zwar bissl gedauert... Aber hier bitte schön...

Code: Alles auswählen

;Hroudtwolf 2005(c)
;Move Gadgets
If OpenWindow(0, 0, 0, 800, 600,#PB_Window_SystemMenu | #PB_Window_ScreenCentered , "Move Gadgets")

If OpenWindow(1, 10, 10, 80, 80, #pb_window_borderless|#PB_Window_Invisible|#WS_CHILD|#WS_CLIPCHILDREN, "") 
SetParent_(WindowID(1),WindowID(0)) 
SetWindowLong_(WindowID(),#GWL_EXSTYLE,#WS_EX_TOOLWINDOW)   
ShowWindow_(WindowID(),#SW_SHOW) 
  If CreateGadgetList(WindowID(1))
    TextGadget (1,0,0,80,80,"test",#pb_text_border)
  EndIf
EndIf  
  Repeat
   
    EventID = WaitWindowEvent()
       



                         
 
         
Select eventid

  Case #PB_EventCloseWindow 
    Quit = 1
  Case #wm_lbuttondown
     If EventWindowID() =1
           ReleaseCapture_() 
           SendMessage_(WindowID(1), #WM_SYSCOMMAND, #SC_MOVE + #HTCAPTION, 0) 
     EndIf 
EndSelect 

     
   

   
  Until Quit = 1
  
  EndIf 

Verfasst: 19.05.2005 00:15
von Neptunar
Ich resize das Gadget (habe es vorher schon so gemacht) und das flimmern geht nicht weg ;(

mfg Neptunar

Verfasst: 19.05.2005 00:23
von Hroudtwolf
Nimm doch denn code den ich dir eben gegeben hab.
Da flimmert nix mehr.

Verfasst: 19.05.2005 00:41
von Neptunar
sorry, hab dein zweiten code net gesehen

aber so geht es! thx!!! :)