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
kann natürlich nicht so ganz funzen, aber das müsste doch gehen:
bluejoke
EDIT: bezieht sich auf den Code vom Wolf!
Verfasst: 18.05.2005 23:52
von Neptunar
bluejoke hat geschrieben:
Also die Bedingung
kann natürlich nicht so ganz funzen, aber das müsste doch gehen:
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!!!
