Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ta sekcja zawiera rozwiązania typowych problemów.
Ogólne rozwiązywanie problemów
| Kategoria | Opis |
|---|---|
| Kwestia | Mam uruchomiony Windows Server 2008, a funkcje Windows Touch nie działają. |
| Przyczyna | Nie włączyłeś doświadczenia pulpitu. |
| Rozwiązanie | Otwórz narzędzie administracyjne Menedżera serwera: kliknij przycisk Uruchom, wskaż Narzędzia administracyjne, a następnie kliknij pozycję Menedżer serwera . Kliknij element funkcje w lewej kolumnie. Kliknij Dodaj funkcje w sekcji Funkcje. Wybierz pozycję Środowisko pulpitu, kliknij przycisk Dalej, a następnie kliknij przycisk Zainstaluj. |
| Kategoria | Opis |
|---|---|
| Problem | Za każdym razem, gdy szybko przesuwam palcem przez moją aplikację, pojawia się strzałka, a mój gest lub manipulacja nie rejestruje się poprawnie. |
| Przyczyna | Włączając funkcję flicks, gdy nie jest to potrzebne. |
| Rozwiązanie | Masz włączone migacze, gdy chcesz go wyłączyć. Aby uzyskać informacje na temat wyłączania migawek pióra, zobacz Starsza obsługa przesuwania z paskami przewijania. |
| Zagadnienie | Nie mogę odróżnić danych wejściowych myszy i danych wejściowych Windows Touch. | ||
| Przyczyna | System Windows generuje komunikaty związane z myszką dla kompatybilności ze starszymi systemami, gdy użytkownik kliknie ekran. | ||
| Rozwiązanie | Aby określić źródło, możesz wywołać GetMessageExtraInfo dla komunikatów WM_LBUTTONDOWN i WM_LBUTTONUP. Poniższy kod pokazuje, jak można to zrobić.
|
| Kategoria | Opis |
|---|---|
| Problem | Jak uruchamiać aplikacje Microsoft PixelSense w systemie Windows 7? |
| Przyczyna | Funkcje Windows Touch i Microsoft PixelSense są niezgodne. |
| Rozwiązanie | Musisz wybrać platformę Windows 7 lub platformę Microsoft PixelSense. |
Rozwiązywanie problemów z manipulowaniem i inercjami
| Kategoria | Opis |
|---|---|
| Kwestia | Moja aplikacja zawiesza się bez powodu. Otrzymuję naruszenia dostępu podczas inicjowania interfejsów obiektów. |
| Przyczyna | Brak wywołania CoInitialize w przypadku korzystania z interfejsu IManipulationProcessor lub IInertiaProcessor. |
| Rozwiązanie | Może to być spowodowane instancjowaniem obiektów Windows Touch Modelu Obiektów COM bez wywołania CoInitialize. Dzieje się tak czasami, gdy konwertujesz projekty z używania gestów do używania manipulacji lub interfejsów inercji. |
| Kategoria | Opis |
|---|---|
| Problem | Mój obiekt obraca się nieprawidłowo, gdy jest tłumaczony. Obrót jednym palcem nie działa poprawnie. |
| Przyczyna | Niepoprawne ustawianie punktów obrotu na obiekcie. |
| Rozwiązanie | Nie konfigurujesz poprawnie punktów obrotu manipulacji. Ustaw właściwości PivotPointX i PivotPointY na środek obiektu lub punktu, wokół którego chcesz obracać, i ustaw właściwość PivotRadius na promień obiektu. |
Rozwiązywanie problemów z dotykowym wprowadzaniem danych w systemie Windows
| Kategoria | Opis |
|---|---|
| Problem | Po obsłużeniu komunikatu WM_TOUCH przestaję otrzymywać informację zwrotną dotyczącą granic. |
| Przyczyna | Korzystanie z komunikatu WM_TOUCH bez jego obsługiwania. |
| Rozwiązanie | Prawdopodobnie korzystasz z komunikatu Windows Touch bez przekazywania go do DefWindowProc, co spowoduje nieoczekiwane zachowanie. Aby uzyskać więcej informacji na temat prawidłowego obsługi komunikatów WM_TOUCH, zobacz Wprowadzenie do komunikatów dotykowych systemu Windows. |
| Problem | Dołączam windows.h, ale nadal informuje, że WM_TOUCH nie jest zdefiniowany. | ||
| Przyczyna | Wersja systemu Windows w pliku Targetver.h jest niepoprawna. | ||
| Rozwiązanie | Nie ustawiono poprawnej wersji systemu Windows w projekcie. Poniższy kod ilustruje prawidłowo ustawione wersje systemu Windows dla windows Touch w systemie Windows 7.
|
| Problem | Moje współrzędne x i y dla dotyku wydają się być nieprawidłowe. Są to wartości większe niż oczekiwano lub są wartościami ujemnymi. | ||
| Przyczyna | Może być konieczne przekonwertowanie punktów dotykowych na piksele lub może być konieczne przekonwertowanie współrzędnych ekranu. | ||
| Rozwiązanie | Upewnij się, że wywołujesz TOUCH_COORD_TO_PIXEL i ScreenToClient. Poniższy kod pokazuje, jak to zrobić.
Uwaga: |
| Kategoria | Opis |
|---|---|
| Problem | Nie widzę WM_TOUCH wiadomości, ale wiem, że funkcja Windows Touch działa, ponieważ widzę WM_GESTURE wiadomości. |
| Przyczyna | Brak wywołania RegisterTouchWindow. |
| Rozwiązanie | WM_TOUCH i WM_GESTURE wiadomości wzajemnie się wykluczają. Jeśli nie wywołasz RegisterTouchWindow, otrzymasz tylko wiadomość WM_GESTURE. |
| Kategoria | Opis |
|---|---|
| Kwestia | Zauważam małe opóźnienia od czasu dotknięcia palca w dół do kiedy otrzymuję dane wejściowe w mojej aplikacji. |
| Przyczyna | Odrzucenie dłoni powoduje opóźnienia wprowadzania danych. |
| Rozwiązanie | Jeśli TWF_WANTPALM jest ustawione w wywołaniach RegisterTouchWindow, funkcja odrzucania dotyku dłoni jest włączona. Powoduje to małe (100 ms) opóźnienie, podczas gdy oprogramowanie sprawdza, czy dane wejściowe pochodzą z palca, pióra lub dłoni użytkownika. Aby wyłączyć funkcję odrzucania dłoni, wywołaj RegisterTouchWindow z wyłączoną flagą TWF_WANTPALM. |
Rozwiązywanie problemów z gestami dotykowymi w systemie Windows
| Kategoria | Opis |
|---|---|
| Problem | Po obsłudze komunikatu WM_GESTURE przestaję otrzymywać informacje zwrotne o granicach. Lub gest, który pracował wcześniej, nie działa teraz. |
| Przyczyna | Pobieranie komunikatu WM_GESTURE bez jego obsługi. |
| Rozwiązanie | Prawdopodobnie korzystasz z komunikatu Windows Touch bez przekazywania go do DefWindowProc, co spowoduje nieoczekiwane zachowanie. Sprawdź Wprowadzenie do gestów systemu Windows, aby uzyskać więcej informacji na temat prawidłowego obsługi komunikatów WM_GESTURE. |
| Kategoria | Opis |
|---|---|
| Problem | Nie widzę WM_GESTURE wiadomości, ale wiem, że funkcja Windows Touch działa, ponieważ widzę WM_TOUCH wiadomości. |
| Przyczyna | Wywołanie funkcji RegisterTouchWindow. |
| Rozwiązanie | WM_TOUCH i WM_GESTURE wiadomości wzajemnie się wykluczają. Jeśli wywołasz RegisterTouchWindow, nie otrzymasz komunikatów WM_GESTURE. |
| Problem | Nie widzę wszystkich gestów, których spodziewam się zobaczyć. Na przykład widzę gesty z identyfikatorem GID_PAN, ale nie GID_ROTATE. | ||
| Przyczyna | Niektóre gesty, takie jak gest obracania, nie są domyślnie włączone. | ||
| Rozwiązanie | Należy wywołać SetGestureConfig po otrzymaniu komunikatu WM_GESTURENOTIFY zgodnie z opisem w dokumentacji WM_GESTURENOTIFY lub dodać procedurę obsługiwania dla komunikatu WM_GESTURENOTIFY. Poniższy kod pokazuje, jak można zaimplementować procedurę obsługi w celu umożliwienia obsługi rotacji.
Aby uzyskać więcej przykładów typowych konfiguracji gestów, zobacz SetGestureConfig. |
| Kategoria | Opis |
|---|---|
| Problem | Niestandardowe paski przewijania w mojej aplikacji nie przewijają się podczas wykonywania gestu przesuwania. |
| Przyczyna | Brak procedur obsługi dla poprawnych komunikatów WM_*SCROLL. |
| Rozwiązanie | Nie obsługujesz wszystkich komunikatów WM_*SCROLL w dostosowanych paskach przewijania. Zaleca się obsługę komunikatu WM_GESTURE zamiast zachowywać niestandardowe funkcje paska przewijania za pośrednictwem starszej obsługi. Musisz obsługiwać wiadomości zgodnie z opisem w sekcji dotyczącym starszej obsługi przesuwania z paskami przewijania. |
| Kategoria | Opis |
|---|---|
| Zagadnienie | Doświadczam opóźnień przy gestach. |
| Przyczyna | Flicks może powodować opóźnienia gestów. |
| Rozwiązanie | Migacze mogą powodować opóźnienia czasu odbierania komunikatów WM_GESTURE przez aplikację. Aby uzyskać informacje na temat wyłączania gestów machnięcia, zobacz Obsługa dziedziczna przesuwania z paskami przewijania. |
Tematy pokrewne