Problembehandlung für Anwendungen
In diesem Abschnitt finden Sie Lösungen für häufig auftretende Probleme.
Allgemeine Problembehandlung
Category | Beschreibung |
---|---|
Problem | Ich verwende Windows Server 2008, und Windows Touch-Features funktionieren nicht. |
Ursache | Sie haben die Desktopumgebung nicht aktiviert. |
Lösung | Öffnen Sie das Server-Manager-Verwaltungstool: Klicken Sie auf Start, zeigen Sie auf Verwaltungstools, und klicken Sie dann auf Server-Manager. Klicken Sie in der linken Spalte auf das Element Features. Klicken Sie auf Features hinzufügen im Abschnitt Features. Wählen Sie Desktopumgebung, klicken Sie auf Weiter und dann auf Installieren. |
Category | Beschreibung |
---|---|
Problem | Wenn ich meinen Finger schnell über meine Anwendung bewege, wird ein Pfeil angezeigt und meine Geste oder Manipulation wird nicht richtig registriert. |
Ursache | Sie haben „Streichen“ aktiviert, ohne dass dies erforderlich ist. |
Lösung | Sie sollten diese Funktion deaktivieren. Informationen zum Deaktivieren von Stiftstreichfunktionen finden Sie unter Legacy-Unterstützung für Panning mit Scrollbalken. |
Problem | Ich kann nicht zwischen Mauseingabe und Windows Touch-Eingabe unterscheiden. | ||
Ursache | Windows generiert Mausmeldungen für die Legacy-Unterstützung, wenn ein Benutzer auf den Bildschirm klickt. | ||
Lösung | Sie können GetMessageExtraInfo für die Meldungen WM_LBUTTONDOWN und WM_LBUTTONUP aufrufen, um die Quelle zu ermitteln. Der folgende Code zeigt eine mögliche Vorgehensweise.
|
Category | Beschreibung |
---|---|
Problem | Wie führe ich Microsoft PixelSense-Anwendungen unter Windows 7 aus? |
Ursache | Windows Touch und Microsoft PixelSense sind nicht kompatibel. |
Lösung | Sie müssen entweder auf die Windows 7-Plattform oder die Microsoft PixelSense-Plattform ausrichten. |
Problembehandlung bei Manipulationen und Trägheit
Category | Beschreibung |
---|---|
Problem | Meine Anwendung hängt ohne ersichtlichen Grund fest. Ich erhalte Zugriffsverstöße, wenn ich meine Objektschnittstellen initialisiere. |
Ursache | Fehlender Aufruf von CoInitialize bei Verwendung der Schnittstellen IManipulationProcessor oder IInertiaProcessor . |
Lösung | Dies kann durch Instanziierung der COM-Objekte (Windows Touch Component Object Model) verursacht werden, ohne CoInitialize aufzurufen. Dies geschieht manchmal, wenn Sie Projekte von der Verwendung von Gesten zur Verwendung der Manipulationen oder Trägheit-Schnittstellen konvertieren. |
Category | Beschreibung |
---|---|
Problem | Mein Objekt wird nicht ordnungsgemäß rotiert, wenn es übersetzt wird. Die Rotation mit einem Finger funktioniert nicht ordnungsgemäß. |
Ursache | Pivots für ein Objekt werden nicht ordnungsgemäß festgelegt. |
Lösung | Sie richten die Manipulations-Pivotpunkte nicht korrekt ein. Legen Sie die Eigenschaften PivotPointX und PivotPointY auf die Mitte des Objekts oder den beabsichtigten Drehpunkt fest, und setzen Sie die Eigenschaft PivotRadius auf den Radius Ihres Objekts. |
Problembehandlung bei der Windows-Touch-Eingabe
Category | Beschreibung |
---|---|
Problem | Nachdem ich die WM_TOUCH-Nachricht behandelt habe, erhalte ich kein Begrenzungsfeedback mehr. |
Ursache | Verwenden der WM_TOUCH-Nachricht ohne Verarbeitung. |
Lösung | Sie verwenden wahrscheinlich eine Windows Touch-Nachricht, ohne sie an DefWindowProc weiterzuleiten, was zu unerwartetem Verhalten führt. Unter Erste Schritte mit Windows Touch Messages finden Sie weitere Informationen zum korrekten Umgang mit WM_TOUCH-Nachrichten. |
Problem | Ich beziehe windows.h ein, aber ich erhalte immer noch die Meldung, dass WM_TOUCH nicht definiert ist. | ||
Ursache | Die Windows-Version in Targetver.h ist inkorrekt. | ||
Lösung | Sie haben die nicht die korrekte Windows-Version in Ihrem Projekt festgelegt. Der folgende Code veranschaulicht die ordnungsgemäß festgelegten Windows-Versionen für Windows Touch in Windows 7.
|
Problem | Meine x- und y-Koordinaten für die Touch-Eingabe scheinen ungültig zu sein. Sie sind entweder größer als erwartet, oder es sind negative Werte. | ||
Ursache | Möglicherweise müssen Sie Ihre Touchpunkte in Pixel konvertieren, oder Sie müssen die Bildschirmkoordinaten konvertieren. | ||
Lösung | Rufen Sie unbedingt TOUCH_COORD_TO_PIXEL und ScreenToClient auf. Dies wird im folgenden Code veranschaulicht.
Hinweis: |
Category | Beschreibung |
---|---|
Problem | Ich sehe keine WM_TOUCH-Nachrichten, weiß aber, das Windows Touch funktioniert, da ich WM_GESTURE-Nachrichten sehen. |
Ursache | Fehlender Aufruf von RegisterTouchWindow. |
Lösung | WM_TOUCH- und WM_GESTURE-Nachrichten schließen sich gegenseitig aus. Wenn Sie RegisterTouchWindow nicht aufrufen, erhalten Sie nur WM_GESTURE-Nachrichten. |
Category | Beschreibung |
---|---|
Problem | Ich bemerke kleine Verzögerungen zwischen der Berührung mit meinem Finger und der Eingabe in meiner Anwendung. |
Ursache | Die Handflächenablehnung verursacht Verzögerungen bei der Eingabe. |
Lösung | Wenn TWF_WANTPALM in Aufrufen auf RegisterTouchWindow gesetzt ist, ist die Handflächenablehnung aktiviert. Dies führt zu einer kleinen Verzögerung (100 ms), während die Software testet, ob Eingaben von einem Finger, einem Stift oder der Handfläche des Benutzers stammen. Deaktivieren Sie die Handflächenablehnung durch den Aufruf von RegisterTouchWindow bei gelöschtem Flag TWF_WANTPALM. |
Problembehandlung bei Windows-Touch-Gesten
Category | Beschreibung |
---|---|
Problem | Nach der Behandlung der WM_GESTURE-Nachricht bekomme ich kein Begrenzungsfeedback mehr. Oder eine Geste, die zuvor funktioniert hat, funktioniert jetzt nicht. |
Ursache | Verwenden der WM_GESTURE-Nachricht ohne Verarbeitung. |
Lösung | Sie verwenden wahrscheinlich eine Windows Touch-Nachricht, ohne sie an DefWindowProc weiterzuleiten, was zu unerwartetem Verhalten führt. Unter Erste Schritte mit Windows Gestures finden Sie weitere Informationen zum korrekten Umgang mit WM_GESTURE-Nachrichten. |
Category | Beschreibung |
---|---|
Problem | Ich sehe keine WM_GESTURE-Nachrichten, weiß aber, das Windows Touch funktioniert, da ich WM_TOUCH-Nachrichten sehen. |
Ursache | Aufrufen von RegisterTouchWindow. |
Lösung | WM_TOUCH- und WM_GESTURE-Nachrichten schließen sich gegenseitig aus. Wenn Sie RegisterTouchWindow aufrufen, erhalten Sie keine WM_GESTURE-Nachrichten. |
Problem | Ich sehe nicht alle Gesten, die ich erwarte. Beispielsweise sehe ich Gesten mit der Kennung GID_PAN, aber nicht solche mit GID_ROTATE. | ||
Ursache | Einige Gesten, z. B. die Drehgeste, sind standardmäßig nicht aktiviert. | ||
Lösung | Sie müssen SetGestureConfig aufrufen, wenn Sie eine WM_GESTURENOTIFY-Nachricht erhalten, wie in der WM_GESTURENOTIFY-Referenz beschrieben, oder Sie müssen einen Handler für die WM_GESTURENOTIFY-Nachricht hinzufügen. Der folgende Code zeigt, wie ein Handler implementiert werden kann, um die Drehung zu unterstützen.
Weitere Beispiele für typische Gestenkonfigurationen finden Sie unter SetGestureConfig. |
Category | Beschreibung |
---|---|
Problem | Die benutzerdefinierten Bildlaufleisten in meiner Anwendung führen keinen Bildlauf durch, wenn ich die Verschiebungsgeste ausführe. |
Ursache | Fehlende Handler für die korrekten WM_*SCROLL-Nachrichten. |
Lösung | Sie behandeln nicht alle WM_*SCROLL-Nachrichten in Ihren benutzerdefinierten Bildlaufleisten. Es wird empfohlen, die WM_GESTURE-Nachricht zu behandeln, anstatt benutzerdefinierte Bildlaufleistenfunktionen über die Legacy-Unterstützung beizubehalten. Sie müssen Nachrichten unterstützen, wie im Abschnitt Legacy-Unterstützung für Verschiebungen mit Bildlaufleisten beschrieben. |
Category | Beschreibung |
---|---|
Problem | Ich erhalte Verzögerungen bei Gesten. |
Ursache | Streichen verursacht möglicherweise Verzögerungen bei Gesten. |
Lösung | Streichen kann zu Verzögerungen dabei führen, wie lange es dauert, bis Ihre Anwendung WM_GESTURE-Nachrichten empfängt. Siehe Legacy-Unterstützung für Panning mit Scrollbalken für Information zur Deaktivierung von Streichfunktionen. |
Zugehörige Themen