Solução de problemas de aplicativos
Esta seção fornece soluções para problemas comuns.
Solução de problemas gerais
Categoria | Descrição |
---|---|
Problema | Estou executando o Windows Server 2008 e os recursos do Windows Touch não estão funcionando. |
Causa | Você não habilitou a Experiência desktop. |
Solução | Abra a ferramenta administrativa Gerenciador do Servidor: clique em Iniciar, aponte para Ferramentas Administrativas e clique em Gerenciador do Servidor. Clique no item Recursos na coluna à esquerda. Clique em Adicionar Recursos na seção Recursos . Selecione Experiência da Área de Trabalho, clique em Avançar e, em seguida, clique em Instalar. |
Categoria | Descrição |
---|---|
Problema | Sempre que eu mover meu dedo rapidamente pelo meu aplicativo, uma seta aparece e meu gesto ou manipulação não está se registrando corretamente. |
Causa | Ter movimentos habilitados quando você não precisar dele. |
Solução | Você tem movimentos habilitados quando deseja que ele seja desabilitado. Consulte Suporte herdado para movimento panorâmico com barras de rolagem para obter informações sobre como desabilitar movimentos de caneta. |
Problema | Não consigo discernir entre a entrada do mouse e a entrada do Windows Touch. | ||
Causa | O Windows gera mensagens de mouse para suporte herdado quando um usuário clica na tela. | ||
Solução | Você pode chamar GetMessageExtraInfo para o WM_LBUTTONDOWN e WM_LBUTTONUP mensagens para determinar a origem. O código a seguir mostra como isso pode ser feito.
|
Categoria | Descrição |
---|---|
Problema | Como fazer executar aplicativos Do Microsoft PixelSense no Windows 7? |
Causa | O Windows Touch e o Microsoft PixelSense são incompatíveis. |
Solução | Você precisa direcionar a plataforma Windows 7 ou a plataforma Microsoft PixelSense. |
Solução de problemas de manipulações e inércia
Categoria | Descrição |
---|---|
Problema | Meu aplicativo está congelando sem motivo. Estou recebendo violações de acesso quando inicializo minhas interfaces de objeto. |
Causa | Falta uma chamada para CoInitialize ao usar as interfaces IManipulationProcessor ou IInertiaProcessor . |
Solução | Isso pode ser causado pela instanciação dos objetos COM (Windows Touch Component Object Model) sem chamar CoInitialize. Isso acontece às vezes quando você está convertendo projetos de usando gestos para usar as manipulações ou interfaces de inércia. |
Categoria | Descrição |
---|---|
Problema | Meu objeto está girando incorretamente quando está sendo traduzido. A rotação de dedo único não está funcionando corretamente. |
Causa | Configuração incorreta de pivôs em um objeto . |
Solução | Você não está configurando os pontos dinâmicos de manipulação corretamente. Defina as propriedades PivotPointX e PivotPointY como o centro do objeto ou ponto que você deseja girar e defina a propriedade PivotRadius como o raio do objeto. |
Solução de problemas de entrada do Windows Touch
Categoria | Descrição |
---|---|
Problema | Depois de lidar com a mensagem WM_TOUCH , paro de receber comentários de limite. |
Causa | Consumir a mensagem WM_TOUCH sem lidar com ela. |
Solução | Você provavelmente está consumindo uma mensagem do Windows Touch sem encaminhá-la para DefWindowProc, o que resultará em um comportamento inesperado. Verifique Introdução com Mensagens de Toque do Windows para obter mais informações sobre como lidar corretamente com mensagens WM_TOUCH. |
Problema | Estou incluindo windows.h, mas ainda diz que WM_TOUCH não está definido. | ||
Causa | A versão do Windows em Targetver.h está incorreta. | ||
Solução | Você não definiu a versão correta do Windows em seu projeto. O código a seguir ilustra as versões corretamente definidas do Windows para Windows Touch no Windows 7.
|
Problema | Minhas coordenadas x de entrada de toque e coordenadas y parecem inválidas. Eles são valores maiores do que eu esperava ou são valores negativos. | ||
Causa | Talvez seja necessário converter seus pontos de toque em pixels ou talvez seja necessário converter as coordenadas da tela. | ||
Solução | Verifique se você está chamando TOUCH_COORD_TO_PIXEL e ScreenToClient. O código a seguir mostra como fazer isso.
Observação: |
Categoria | Descrição |
---|---|
Problema | Não estou vendo mensagens WM_TOUCH , mas sei que o Windows Touch está funcionando porque estou vendo mensagens WM_GESTURE . |
Causa | Falta uma chamada para RegisterTouchWindow. |
Solução | WM_TOUCH e mensagens WM_GESTURE são mutuamente exclusivas. Se você não chamar RegisterTouchWindow, receberá apenas WM_GESTURE mensagens. |
Categoria | Descrição |
---|---|
Problema | Estou percebendo pequenos atrasos desde o momento em que toco o dedo até quando estou recebendo entrada no meu aplicativo. |
Causa | A rejeição da palma da mão está causando atrasos na entrada. |
Solução | Se TWF_WANTPALM for definido em chamadas para RegisterTouchWindow, a rejeição da palma da mão será habilitada. Isso causa um pequeno atraso (100 ms), enquanto o software testa se a entrada vem de um dedo, caneta ou palma do usuário. Desabilite a rejeição da palma chamando RegisterTouchWindow com o sinalizador TWF_WANTPALM limpo. |
Solução de problemas de gestos de toque do Windows
Categoria | Descrição |
---|---|
Problema | Depois de lidar com a mensagem de WM_GESTURE , interrompa a obtenção de comentários de limite. Ou, um gesto que funcionou anteriormente não funciona agora. |
Causa | Consumir a mensagem WM_GESTURE sem lidar com ela. |
Solução | Você provavelmente está consumindo uma mensagem do Windows Touch sem encaminhá-la para DefWindowProc, o que resultará em um comportamento inesperado. Verifique Introdução com gestos do Windows para obter mais informações sobre como lidar corretamente com mensagens WM_GESTURE. |
Categoria | Descrição |
---|---|
Problema | Não estou vendo WM_GESTURE mensagens, mas sei que o Windows Touch está funcionando porque estou vendo mensagens WM_TOUCH . |
Causa | Chamando RegisterTouchWindow. |
Solução | WM_TOUCH e mensagens WM_GESTURE são mutuamente exclusivas. Se você chamar RegisterTouchWindow, não receberá WM_GESTURE mensagens. |
Problema | Não estou vendo todos os gestos que espero ver. Por exemplo, estou vendo gestos com o identificador GID_PAN mas não GID_ROTATE. | ||
Causa | Alguns gestos, como o gesto de girar, não são habilitados por padrão. | ||
Solução | Você precisa chamar SetGestureConfig quando receber uma mensagem WM_GESTURENOTIFY conforme descrito na referência WM_GESTURENOTIFY ou precisa adicionar um manipulador para a mensagem WM_GESTURENOTIFY . O código a seguir mostra como um manipulador pode ser implementado para habilitar o suporte para rotação.
Para obter mais exemplos de configurações de gesto típicas, consulte SetGestureConfig. |
Categoria | Descrição |
---|---|
Problema | As barras de rolagem personalizadas no meu aplicativo não estão rolando quando faço o gesto de panorâmica. |
Causa | Manipuladores ausentes para as mensagens WM_*SCROLL corretas. |
Solução | Você não está lidando com todas as mensagens WM_*SCROLL em suas barras de rolagem personalizadas. É recomendável que você manipule a mensagem WM_GESTURE em vez de manter a funcionalidade da barra de rolagem personalizada por meio do suporte herdado. Você precisa dar suporte a mensagens conforme detalhado na seção Suporte herdado para movimento panorâmico com barras de rolagem. |
Categoria | Descrição |
---|---|
Problema | Estou recebendo atrasos por gestos. |
Causa | Os movimentos podem estar causando atrasos para gestos. |
Solução | Os movimentos podem causar atrasos por quanto tempo seu aplicativo leva para receber mensagens WM_GESTURE . Consulte Suporte herdado para movimento panorâmico com barras de rolagem para obter informações sobre como desabilitar movimentos. |
Tópicos relacionados
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de