Maustaste gedrückt halten - gelöst (auf viele Arten ;)
Maustaste gedrückt halten - gelöst (auf viele Arten ;)
Wie kann ich abfragen, ob die Maustaste gedrückt ist (Also wie Mousebutton(x) unter DirectX, aber eben im Fenster, über einem Gadget)
Zuletzt geändert von benpicco am 21.04.2006 01:33, insgesamt 1-mal geändert.
Johann Wolfgang von Geothe hat geschrieben:Wie dieses oder jenes Wort geschrieben wird, darauf kommt es doch eigentlich nicht an, sondern darauf, daß die Leser verstehen, was man damit sagen wollte.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
für windows
liefert für gedrückt halten nen anderen wert als für gerade gedrückt.
(ich glaub, -32767 bei der ersten abfrage und 32768 bei weiteren abfragen)
[edit]
yup...
Code: Alles auswählen
GetAsyncKeyState_(#VK_LBUTTON)
(ich glaub, -32767 bei der ersten abfrage und 32768 bei weiteren abfragen)
[edit]
yup...
Code: Alles auswählen
Repeat
a = GetAsyncKeyState_(#VK_LBUTTON)
If a <> b
Debug a
b=a
EndIf
ForEver
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
das ist dann die -32767benpicco hat geschrieben:MSDN hat geschrieben:[...]If the most significant bit is set, the key is down[...]
(= #WM_LBUTTONDOWN = #PB_EventType_LeftClick)
gedrückt halten ist das "second significant"
...is wohl die frage, was man unter 'key is down' versteht...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Code: Alles auswählen
global old
procedure wndproc(hwnd,msg,wp,lp)
IF msg = #WM_LBUTTONDOWN
DEBUG "DOWN"
Endif
ProcedureReturn CallWindowProc_(old,hwnd,msg,wp,lp)
EndProcedure
*hWindow.long = OpenWindow(#PB_Any,#PB_Ignore,#PB_Ignore,400,400,"")
CreateGadgetList(*hWindow\l)
*con.long = ContainerGadget(#pb_any,10,10,200,200,#PB_Container_Single)
old = SetWindowLong_(*con\l,#GWL_WNDPROC,@wndproc())
Repeat
Until WaitWindowEvent() = #WM_CLOSE
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Also der code von hallodri tut bei mir auch nichts anderes, als "DOWN" in dem Moment auszugeben, wen ich die Taste drücke, was ich will ist sowas:
dagegen hallodri´s code in 3.94:
(Setzt scheinbar eine WndProc für das Containergadget und fängt die #WM_LBUTTONDOWNNachrichten für dieses ab. Aber das habe ich doch gar nicht gewollt
)
Code: Alles auswählen
Repeat
wert=GetAsyncKeyState_(#VK_LBUTTON)
If PeekB(@wert+1)
Debug "DOWN"
EndIf
Delay(20)
Until 0
Code: Alles auswählen
Global old
Procedure wndproc(hwnd,msg,wp,lp)
If msg = #WM_LBUTTONDOWN
Debug "DOWN"
EndIf
ProcedureReturn CallWindowProc_(old,hwnd,msg,wp,lp)
EndProcedure
*hWindow.LONG = OpenWindow(#PB_Any,100,100,400,400,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"")
CreateGadgetList(*hWindow\l)
*con.LONG = ContainerGadget(#PB_Any,10,10,200,200,#PB_Container_Single)
old = SetWindowLong_(*con\l,#GWL_WNDPROC,@wndproc())
Repeat
Until WaitWindowEvent() = #WM_CLOSE

Johann Wolfgang von Geothe hat geschrieben:Wie dieses oder jenes Wort geschrieben wird, darauf kommt es doch eigentlich nicht an, sondern darauf, daß die Leser verstehen, was man damit sagen wollte.
Sorry , habe mal wieder voellig verpeilt das es sich hier um das
Anfaenger Forum handelt.
Anfaenger Forum handelt.
Code: Alles auswählen
global old.l
global lb.l
procedure wndproc(hwnd,msg,wp,lp)
IF msg = #WM_LBUTTONDOWN
lb = 1
Endif
IF msg = #WM_LBUTTONUP
lb = 0
Endif
ProcedureReturn CallWindowProc_(old,hwnd,msg,wp,lp)
EndProcedure
*hWindow.long = OpenWindow(#PB_Any,#PB_Ignore,#PB_Ignore,400,400,"")
CreateGadgetList(*hWindow\l)
*con.long = ContainerGadget(#pb_any,10,10,200,200,#PB_Container_Single)
old = SetWindowLong_(*con\l,#GWL_WNDPROC,@wndproc())
Repeat
debug lb
Until WaitWindowEvent(10) = #WM_CLOSE