AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Hook WH_GESTURENOTIFY

Ein Thema von Mossi · begonnen am 28. Jul 2015 · letzter Beitrag vom 29. Jul 2015
 
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
427 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Hook WH_GESTURENOTIFY

  Alt 28. Jul 2015, 15:52
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
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz