Sjekke om museknapp nede?

Tags:    delphi

<< < 12 > >>
Hei.
Er det noen her som vet hvordan man kan sjekke om en museknapp holdes nede? Det skal være med WinAPI.

Mvh
DiZpel



11 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Hei.
Er det noen her som vet hvordan man kan sjekke om en museknapp holdes nede? Det skal være med WinAPI.

Mvh
DiZpel


Hvis du mener på dit eget vindue, så får du jo en besked, når der trykkes ned ved WM_LBUTTONDOWN og en WM_LBUTTONUP, når knappen slippes igen.
Hvis du mener globalt, så bliver det lidt mere avanceret, så det vil jeg vente med at forklare.

1101110100010110000101000001

Killers don't end up in jail - they end up on a high-score!



Hmm.. Jeg vil gjerne sjekke om en museknapp holdes nede i et annet vindu enn mitt program, men globalt er ok.
Hvis det er problemer med poeng, gir jeg gjerne ekstra. ;)

Mvh
DiZpel

[Redigeret d. 07/05-05 23:45:33 af DiZpel]



Hmm, kunne du eventuelt leve med C++ kode?
For så var jeg fri for at konvertere det til Delphi og kommentere den - kan dog godt kommentere den under alle omstændigheder.
Win32 API funktionerne og klasserne hedder jo det samme i begge sprog, så hvis du kunne C++, så ville det lette lidt af arbejdet.
Jeg vil selvfølgelig gerne gøre konvertere og kommentere, hvis du ønsker det uden ekstra point ;-)

1101110100010110000101000001

Killers don't end up in jail - they end up on a high-score!



Funktionen man bruger hedder GetAsyncKeyState i C++, jeg tror at det er det samme i Delphi.



Nicolai Lyster Fersner
Jeg tror jeg skal klare å konvertere det til Delphi kode :)

Bertel Brander
GetAsyncKeyState() er kun for å sjekke om en knapp på tastaturet er oppe/nede.

Mvh
DiZpel

[Redigeret d. 08/05-05 00:24:15 af DiZpel]



Ups.. Dobbelpost :(

Mvh
DiZpel

[Redigeret d. 08/05-05 00:23:33 af DiZpel]



Mange tak Bertel - jeg fik en pludselig indskydelse.

@Dizipel
Mit program i C++ opfanger mouseklik eller tastetryk på et globalt plan hele tiden.
I oplægget står der kun, at du behøver at kunne tjekke, hvorvidt en museknap holdes nede. Det er to forskellige ting, så hvis kun, du behøver at vide om musetasten holdes nede på bestemte tidspunkter, så skal du benytte GetAsyncKeyState ligesom Bertel foreslog. GetAsyncKeyState kan nemlig også bruges til musetaster, da de første mange tegn i ASCII systemet ikke bliver brugt af tastaturet.

Du kan jo selv tjekke MSDN (under Remarks afsnittet)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputfunctions/getasynckeystate.asp

Som du kan se, skal du benytte enten VK_LBUTTON eller VK_RBUTTON.

Men bemærk at den returnerede værdi ikke kun er en boolean:
If the function succeeds, the return value specifies whether the key was pressed since the last call to GetAsyncKeyState, and whether the key is currently up or down. If the most significant bit is set, the key is down, and if the least significant bit is set, the key was pressed after the previous call to GetAsyncKeyState. However, you should not rely on this last behavior; for more information, see the Remarks.

Killers don't end up in jail - they end up on a high-score!

[Redigeret d. 08/05-05 00:34:23 af Nicolai Lyster Fersner]



Man kan også bruge GetAsyncKeyState med musen:

Fold kodeboks ind/udKode 




Man kan også bruge GetAsyncKeyState med musen:
...


Aha, det visste jeg ikke :)
Vennligst "svar" Bertel, så får jeg dele poengene :)

Tusen takk 8-)

Mvh
DiZpel



Jeg samler ikke på point. Giv den til Nikolai.



<< < 12 > >>
t