Einzelnen Beitrag anzeigen

Hofes

Registriert seit: 11. Apr 2019
10 Beiträge
 
Delphi 10.3 Rio
 
#19

AW: WM_TOUCH und GetTouchInputInfo

  Alt 12. Apr 2019, 10:56
Interssant da sagt mir das Hint aber was anderes

Dann werd ich die Lösung von gestern nochmal posten müssen..

@TiGü
Ja stimmt, das war in Release compiliert, mit Debug kommt auch nicht so viel mehr raus...

Es ist so das GetTouchInputInfo mag aus irgendeinem Grund den Message Typ "tagMSG" nicht (kommt vom TApplicationEvents bzw
Application.OnMessage). Wenn ich nun eine Prozedur direkt mit dem WM_TOUCH verknüpfe bekomm ich den Message Typ "TMessage".
Diesen frisst die GetTouchInputInfo Funktion...

Code:
procedure wmTouch(var msg : TMessage); message WM_TOUCH;
//..
//..
procedure TfrmMain.wmTouch(var Msg: TMessage);
function tptp(const TouchPoint: TTouchInput): TPoint;
  begin
    Result := Point(TouchPoint.X div 100, TouchPoint.Y div 100);
    PhysicalToLogicalPoint(self.Handle, Result);
  end;

var
  TouchInputs: array of TTouchInput;
  counter: Integer;
  Handled: Boolean;
  P: TPoint;
begin
  Handled := False;
  SetLength(TouchInputs, Msg.WParam);
  GetTouchInputInfo(Msg.LParam, Msg.WParam, @TouchInputs[0], SizeOf(TTouchInput));

  try
    frmMainDisp.Memo1.clear;
    for counter := 0 to Length(TouchInputs)-1 do
    begin
      P := tptp(Touchinputs[counter]);
      frmMainDisp.Memo1.Lines.Add('X'+ IntToStr(counter) + ': ' +IntToStr(p.x));
      frmMainDisp.Memo1.Lines.Add('Y'+ IntToStr(counter) + ': ' +IntToStr(p.y));
    end;

    Handled := True;
  finally
    if Handled then
      CloseTouchInputHandle(Msg.LParam)
    else
      inherited;
  end;
end;
Das ist im Prinzip genau dasselbe wie "ich2" vor 9 Jahren.
Nur das ich die falschen Messages erhalten habe..

Gruß Hofes
Miniaturansicht angehängter Grafiken
beitragloeschen.png  
  Mit Zitat antworten Zitat