Hi Mossi,
willst Du wirklich WM_GESTURENOTIFY hooken? Ich würde es eher mit WM_GESTURE probieren, da hier dann die relevanten Aktionen stattfinden.
Hier mal ein bischen Code, wie ich ihn bei mir verwende (allerdings will ich da nur Gestures innerhalb des Programms auswerten). Vieleicht hilft's Dir ja
Delphi-Quellcode:
procedure XYZ.WndProc(
var Message: TMessage);
var
bResult: Boolean;
gi: GESTUREINFO;
ptPosition: TPoint;
begin
case Message.Msg
of
WM_GESTURE:
begin
ZeroMemory(@gi, SizeOf(gi));
gi.cbSize := SizeOf(gi);
bResult := GetGestureInfo(
Message.LParam, gi);
if bResult
then
begin
case gi.dwID
of
GID_ROTATE:
// Drehung
begin
case gi.dwFlags
of
GF_BEGIN: ...;
GF_END: ...;
else
...;
end;
// Und weitere Verarbeitung abbrechen
Message.Result := 1;
Exit;
end;
GID_ZOOM:
// Zoom
begin
case gi.dwFlags
of
GF_BEGIN:
...
GF_END:
begin
...
end;
else
FZoomValueTracker.CurrentValue := gi.ullArguments;
end;
// Und weitere Verarbeitung abbrechen
Message.Result := 1;
Exit;
end;
GID_PAN:
begin
// aktuelle Position bestimmen
ptPosition := Point(gi.ptsLocation.x, gi.ptsLocation.y);
// Panning beginnen oder beenden
if (gi.dwFlags
and GF_BEGIN) = GF_BEGIN
then
begin
// Und Position merken
FLastPanningPosition := ptPosition;
// Panning aktivieren
StartPanning(ScreenToClient(ptPosition), False, True);
// Feedback verwenden
FPanningData.UseFeedback := True;
BeginPanningFeedback(
Handle);
end
else if (gi.dwFlags
and GF_END) = GF_END
then
begin
// Feredback deaktivieren
EndPanningFeedback(
Handle, True);
CancelPanning;
// Und aktuelle Seite aktivieren wenn Gesture-Ende
OnEndScroll(self);
end
else
begin
// Panning durchführen
TrackPanning(ScreenToClient(ptPosition));
// Panning Feedback geben
if FPanningData.UseFeedback
then
UpdatePanningFeedback(
Handle, -FPanningData.FeedbackOffset.X, -FPanningData.FeedbackOffset.Y, (gi.dwFlags
AND GF_INERTIA) = GF_INERTIA);
end;
// Und weitere Verarbeitung abbrechen
Message.Result := 1;
Exit;
end;
GID_END:
begin
// zur Sicherheit
CancelPanning;
end;
end;
end;
end;
end;
inherited WndProc(
Message);
end;
Grüße,
Uli