Autor Beitrag
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: So 20.04.03 22:34 
Hallo,

ich habe zwar nur ein Mausrad, will aber trotzdem kompatibilität für Muse mit mehreren Wheels (2 Stück) anbieten. Daher: Wie frage ich das 2. Wheel ab? Mit WM_MouseWheel lässt sich nur eins abfragen.

_________________
Life is a bad adventure, but the graphic is really good!
t/f
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 70



BeitragVerfasst: So 20.04.03 22:40 
Hi du!

WM_MouseWheel ist ein Synonym für 'ne Nummer.
Genau wie bei der Tastatur hat jede Taste und auch das Wheel 'ne Nummer für Delphi.

Wenn du also die Nummer des Zweiten Wheels 'rauskriegst, dann kannst du das Teil darüber ansprechen.

Woher du wissen sollst?
Versuch einfach mal im OnMouseDown-Ereignis, den Wert Button auf einem Label oder so auszugeben. Dann stehts vor dir aufm Formular ;)
(bei der Tastatur hab' ich so 'rausbekommen ... z.B. PfeilHoch=40 (bzw vk_up) aber w = 87, s=83 ...)

Ob du damit 'rauskriegst, wie sich das Wheel dreht, weiß ich nicht so genau.

greetz
//me
Andreas Pfau Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Mo 21.04.03 11:39 
Juhu, Danke für den Tipp, jetzt hab' ich's!

Ich habe oben geschreiben, dass ich nur ein Wheel habe... da fiel mir ein, main Vaddi, der hat ja irgendwo eine 2-Wheel-Maus rumfahren. Die hab' ich installiert. Dann habe ich WM_MouseWheel abgefangen... Ergebnis: Der Flag-Parameter enthält das 64er-Bit, wenn's sich's um's 2. Wheel handelt. Für alle, die das anchmachen wollen:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
 If (Msg.message = WM_MouseWheel) Then begin
  If (LoWord(Msg.WParam) And 64 = 0) Then
   WheelY := WheelY + ShortInt(HiWord(Msg.wParam)) div 120
  Else
   WheelX := WheelX + ShortInt(HiWord(Msg.wParam)) div 120;
  Label1.Caption := Format('X=%d Y=%d', [WheelX, WheelY]);
 end;


Dieser Code muss in OnMessage (TApplicationEvents). Es scheint nur hier zu klappen, wenn man eine Prozedur schreibt, die nur WM_MouseWheel abfängt, funzt's nicht, warum auch immer. AHt jemand eine Ahnung, warum das so ist???

_________________
Life is a bad adventure, but the graphic is really good!