Frage

Wie kann ich Windows feststellen, dass ich nicht hilfreiche Vorverarbeitung bei Tablet-Pen-Events vorbearbeitet habe?

Ich programmiere in Python 2.6 und zielte auf Tablet -PCs mit Windows 7 ab (obwohl ich möchte, dass mein Programm mit wenig Modifikation auf XP mit einem intelligenten interaktiven Whiteboard und für Mausbenutzer unter Linux/Mac arbeitet). Ich habe ein Programm geschrieben, das sich in die normalen Windows -Mouse -Ereignisse, Wm_Mousemove usw. einbindet, und auf eine Leinwand schreibt.

Das Problem ist, dass die Mausmeldungen mit dem Fummeln vor meiner Bewerbung fummeln. Ich fand heraus, dass, wenn ich lange Schläge und Pause zwischen Strichen mache, die Mausmeldungen ordnungsgemäß gesendet werden. Aber wenn ich mehrere schnelle kurze Schlaganfälle mache, dann tut etwas nicht hilfreiche Vorverarbeitung. Insbesondere, wenn ich ungefähr 10 Pixel lang abwärts streichle und dann einen weiteren Abschnitt etwa fünf Pixel rechts vom ersten zum ersten Mal mache, dann berichtet der zweite Wm_MouseDown, dass es von genau dem gleichen Ort wie der erste stammt.

Dies sieht aus wie eine Art Vorverarbeitung, vielleicht damit naive Anwendungen nicht mit Doppelklicken verwirrt werden. Aber für meine Bewerbung, wo ich eine sehr treue Reaktion auf schnelle Gesten möchte, ist es nicht hilfreich.

Ich fand einen Verweis auf das MicrosoftTabletPenServiceProperty -Atom und auf den Fensterstil des CS_DBLCLKS, und ich habe beide mit dem folgenden Python -Code ausgeschaltet:

hwnd = self.GetHandle()  
tablet_atom = "MicrosoftTabletPenServiceProperty" 
atom_ID = windll.kernel32.GlobalAddAtomA(tablet_atom)  
windll.user32.SetPropA(hwnd,tablet_atom,1)  
currentstyle = windll.user32.GetClassLongA(hwnd, win32con.GCL_STYLE)  
windll.user32.SetClassLongA(hwnd, win32con.GCL_STYLE, currentstyle & ~win32con.CS_DBLCLKS) 

Aber es hat keine Wirkung.

Ich habe versucht, einen Low-Level-Haken für den Maus-Treiber mit SetWindowshookex zu schreiben, aber es funktioniert nicht-offensichtlich werden die Mausmeldungen noch vorverarbeitet, bevor sie an meinen Windows-Hook mit niedrigem Ebene gesendet werden.

Ich wäre sehr dankbar für Ratschläge, wie man diese Vorverarbeitung ausschalten kann. Ich möchte nicht zu Realtimestylus wechseln - zuerst, weil es nicht auf Windows XP Plus Smart Interactive Whiteboard funktioniert, zweitens, weil ich nicht sehen kann, wie man Realtimestylus in CPython benutzt Mein Code würde nicht mehr auf Linux/Mac ausgeführt.

Damon.

War es hilfreich?

Lösung

Für rohe Mausmeldungen können Sie verwenden WM_INPUT auf XP und später. Sieben fügten einige berührende Sachen hinzu: WM_GESTURE und WM_TOUCH

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top