Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#5

AW: Multitouch Anwendung unter Delphi 7

  Alt 21. Nov 2010, 22:53
Hab mal ein bissl am Exceptionhandling rumgespielt.
TouchPointToPoint wird in den Private-Abschnitt der TForm1 verschoben.
Und die angesprochenen Form1 entfernt.

Delphi-Quellcode:
procedure TForm1.WMGestureNotify(var Msg: TWMGestureNotify);
begin
  Msg.Result := DefWindowProc(Handle, Msg.Msg, Msg.Unused, Longint(Msg.NotifyStruct));
end;

procedure TForm1.WMGesture(var Msg: TMessage);
begin
  Msg.Result := DefWindowProc(Handle, Msg.Msg, Msg.WParam, Msg.LParam);
end;

procedure TForm1.WMTabletFlick(var Msg: TMessage);
begin
  Msg.Result := DefWindowProc(Handle, Msg.Msg, Msg.WParam, Msg.LParam);
end;

function TForm1.TouchPointToPoint(const TouchPoint: TTouchInput): TPoint;
begin
  Result := Point(TouchPoint.X div 100, TouchPoint.Y div 100);
  PhysicalToLogicalPoint(Handle, Result);
end;

procedure TForm1.WMTouch(var Msg: TMessage);
var
  TouchInputs: array of TTouchInput;
  counter: Integer;
  Point: TPoint;
begin
  SetLength(TouchInputs, Msg.WParam);
  GetTouchInputInfo(Msg.LParam, Msg.WParam, @TouchInputs[0], SizeOf(TTouchInput));
  try
    for counter := 0 to High(TouchInputs) do begin
      Point := TouchPointToPoint(TouchInputs[counter]);

      // ...

    end;
  finally
    CloseTouchInputHandle(Msg.LParam);
  end;
  inherited;
end;

Tipp: Verschiebe einfach mal diese globale Variable aus deiner Unit in die DPR.
Bzw. lösch diese aus deinen Unit und erstelle eine Dummy: TForm; in deiner DPR und benenne alle Form-Variablen in diese um.

Wenn danach dein Programm noch funktioniert, dann hast du es richtig gemacht.


Diese Globale ist einfach nur was Schreckliches und gehört abgeschafft.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (21. Nov 2010 um 23:01 Uhr)
  Mit Zitat antworten Zitat