Aplicativos para solução de problemas
Esta seção traz soluções para problemas comuns.
Solução de problemas gerais
Categoria | Descrição |
---|---|
Problema | Estou usando o Windows Server 2008 e os recursos do Windows Touch não estão funcionando. |
Causa | Você não ativou a Experiência Desktop. |
Solução | Abra a ferramenta administrativa do 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 Desktop, clique em Avançar e depois em Instalar. |
Categoria | Descrição |
---|---|
Problema | Sempre que eu movo meu dedo rapidamente pelo meu aplicativo, uma seta aparece e meu gesto ou manipulação não é registrado corretamente. |
Causa | Ter os movimentos ativados quando você não precisa. |
Solução | Você está deixando os movimentos ativados quando precisa que eles fiquem desativados. Consulte Suporte legado para panorâmica com barras de rolagem para obter informações sobre como desabilitar movimentos de caneta. |
Problema | Não consigo distinguir entre a entrada do mouse e a entrada do Windows Touch. | ||
Causa | O Windows emite mensagens de mouse para suporte legado quando um usuário clica na tela. | ||
Solução | Você pode chamar GetMessageExtraInfo para as mensagens WM_LBUTTONDOWN e WM_LBUTTONUP para determinar a origem. O código a seguir mostra como isso poderia ser feito.
|
Categoria | Descrição |
---|---|
Problema | Como executo 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 do Windows 7 ou a plataforma do Microsoft PixelSense. |
Solucionar problemas de manipulações e inércia
Categoria | Descrição |
---|---|
Problema | Meu aplicativo está travando sem motivo. Estou recebendo violações de acesso ao inicializar minhas interfaces de objeto. |
Causa | Perdendo uma chamada para CoInitialize ao usar as interfaces IManipulationProcessor ou IInertiaProcessor. |
Solução | Isso pode ser causado pela instanciação dos objetos COM (Component Object Model) do Windows Touch sem chamar CoInitialize. Isso acontece às vezes quando você está convertendo projetos que usam os gestos para usar interfaces de manipulação ou inércia. |
Categoria | Descrição |
---|---|
Problema | Meu objeto gira incorretamente ao ser convertido. A rotação de um dedo não está funcionando direito. |
Causa | Configuração incorreta de pivôs em um objeto. |
Solução | Você não está configurando corretamente os pontos de pivô de manipulação. Defina as propriedades PivotPointX e PivotPointY para o centro do objeto ou ponto em volta do qual você deseja girar e defina a propriedade PivotRadius para o raio do seu objeto. |
Solução de problemas de entrada do Windows Touch
Categoria | Descrição |
---|---|
Problema | Depois de lidar com a mensagem WM_TOUCH, eu paro de receber comentários sobre limites. |
Causa | Consumindo a mensagem WM_TOUCH sem manipulá-la. |
Solução | Você provavelmente está consumindo uma mensagem do Windows Touch sem encaminhá-la para DefWindowProc, que resultará em um comportamento inesperado. Consulte Introdução às mensagens do Windows Touch para mais informações sobre como lidar adequadamente com mensagens WM_TOUCH. |
Problema | Estou incluindo o windows.h, mas ainda diz que WM_TOUCH não está definido. | ||
Causa | A versão do Windows em Targetver.h é incorreta. | ||
Solução | Você não definiu a versão correta do Windows no seu projeto. O código seguinte ilustra as versões do Windows definidas corretamente para o Windows Touch no Windows 7.
|
Problema | Minhas coordenadas x e y de entrada de toque parecem inválidas. Tratam-se de valores maiores do que eu esperava ou de valores negativos. | ||
Causa | Pode ser preciso converter seus pontos de toque em pixels ou 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 do WM_TOUCH mas sei que o Windows Touch está funcionando porque estou vendo mensagens do WM_GESTURE. |
Causa | Falta uma chamada para RegisterTouchWindow. |
Solução | As mensagens WM_TOUCH e WM_GESTURE são mutuamente exclusivas. Se não chamar RegisterTouchWindow, você receberá apenas as mensagens WM_GESTURE. |
Categoria | Descrição |
---|---|
Problema | Estou percebendo atrasos desde o momento em que toco meu dedo até quando recebo informações no meu aplicativo. |
Causa | A rejeição da palma 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 atraso (100 ms) enquanto o software testa se a entrada vem de um dedo, caneta ou da palma da mão do usuário. Desabilite a rejeição da palma da mão chamando RegisterTouchWindow com o sinalizador TWF_WANTPALM desmarcado. |
Solução de problemas de gestos do Windows Touch
Categoria | Descrição |
---|---|
Problema | Depois de lidar com a mensagem do WM_GESTURE, eu paro de receber comentários sobre limites. Ou um gesto que funcionava antes não está funcionando agora. |
Causa | Consumindo a mensagem WM_GESTURE sem manipulá-la. |
Solução | Você provavelmente está consumindo uma mensagem do Windows Touch sem encaminhá-la para DefWindowProc, que resultará em um comportamento inesperado. Consulte Introdução aos gestos do Windows para obter mais informações sobre como lidar corretamente com mensagens do WM_GESTURE. |
Categoria | Descrição |
---|---|
Problema | Não estou vendo mensagens do WM_GESTURE mas sei que o Windows Touch está funcionando porque estou vendo mensagens do WM_TOUCH. |
Causa | Chamando RegisterTouchWindow. |
Solução | As mensagens WM_TOUCH e WM_GESTURE são mutuamente exclusivas. Se chamar RegisterTouchWindow, você não receberá mensagens do WM_GESTURE. |
Problema | Não estou vendo os gestos que espero ver. Por exemplo, estou vendo os gestos com o identificador GID_PAN mas não GID_ROTATE. | ||
Causa | Alguns gestos, como o gesto de rotação, 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 você precisa adicionar um manipulador para a mensagem WM_GESTURENOTIFY. O seguinte código mostra como um manipulador pode ser implementado para habilitar o suporte à rotação.
Para obter mais exemplos de configurações típicas de gestos, consulte SetGestureConfig. |
Categoria | Descrição |
---|---|
Problema | As barras de rolagem personalizadas no meu aplicativo não rolam quando eu faço o gesto de movimento panorâmico. |
Causa | Manipuladores ausentes para as mensagens corretas de WM_*SCROLL. |
Solução | Você não está lidando com todas as mensagens WM_*SCROLL nas barras de rolagem personalizadas. É recomendável manipular a mensagem WM_GESTURE em vez de manter a funcionalidade da barra de rolagem personalizada pelo suporte legado. Você precisa dar suporte a mensagens conforme detalhado na seção Suporte legado para movimento panorâmico com barras de rolagem. |
Categoria | Descrição |
---|---|
Problema | Estou recebendo atrasos para gestos. |
Causa | Os movimentos podem estar fazendo os gestos atrasar. |
Solução | Os movimentos podem causar atrasos no tempo que seu aplicativo leva para receber mensagens de WM_GESTURE. Consulte Suporte legado para panorâmica com barras de rolagem para obter informações sobre como desabilitar movimentos. |
Tópicos relacionados