Função ReportWindowContentInertia

[Algumas informações referem-se ao produto pré-lançado que pode ser substancialmente modificado antes de ser lançado comercialmente. Microsoft não faz garantias, expressas ou implícitas, em relação às informações fornecidas aqui.]

Relata ao sistema se o conteúdo da janela especificada está em um estado de inércia.

Sintaxe

WINUSERAPI
BOOL
WINAPI
ReportWindowContentInertia(
    HWND hWnd,
    BOOL bStartInertia);

Parâmetros

hWnd

Um identificador para a janela cujo estado de inércia de conteúdo está sendo relatado.

bStartInertia

TRUE para relatar que o conteúdo da janela inseriu inércia; FALSE para relatar que a inércia parou.

Valor de retorno

Se a função for bem-sucedida, o valor retornado será diferente de zero.

Se a função falhar, o valor retornado será zero.

Observações

O conteúdo da janela estará "em inércia" se ele continuar a se mover depois de ter sido manipulado pela entrada após a conclusão do fluxo de entrada. Relate essa inércia para que a entrada do touchpad possa interromper corretamente esse movimento quando apropriado.

Se uma janela estiver em inércia, o sistema alterará a forma como ele responde à entrada do touchpad:

  • Logo após a chegada da nova entrada do touchpad, o sistema enviará WM_STOPINERTIA para a janela. O aplicativo deve reagir a essa mensagem interrompendo o movimento de seu conteúdo, mas não necessariamente fazendo a transição para fora do estado "inércia" se tiver otimizações para gestos repetidos manipulando o mesmo conteúdo (por exemplo, entrada de teste de clique favorecendo conteúdo em inércia ou lembrando a velocidade de conteúdo existente).
  • Se o sistema determinar que a entrada do touchpad está tentando interromper o movimento de conteúdo, o sistema enviará WM_ENDINERTIA para a janela. O aplicativo deve reagir a essa mensagem interrompendo o movimento de seu conteúdo e saindo do estado "inércia".

Cenários de exemplo:

  • O usuário executa um toque rápido: WM_ENDINERTIA é enviado. A entrada do mouse não é produzida – o toque resultou apenas na inércia final.
  • O usuário segura um dedo no touchpad e, em seguida, levanta-o: WM_STOPINERTIA seguido por WM_ENDINERTIA.
  • O usuário executa um gesto rápido de dois dedos: sem mensagens de inércia. Gestos repetidos devem ser tratados sem interromper desnecessariamente o conteúdo.
  • O usuário segura um dedo (ou dois) no touchpad e, em seguida, executa um gesto de dois dedos: WM_STOPINERTIA. Ao realizar o gesto, era possível que o usuário estivesse tentando interromper o conteúdo.

Embora, na maioria dos casos, o recebimento de WM_STOPINERTIA seja seguido por WM_ENDINERTIA ou outro gesto de touchpad, não é garantido. Se os aplicativos implementarem um estado de conteúdo especial ao receber WM_STOPINERTIA, esse estado deverá ser encerrado após algum tempo. Da mesma forma, WM_ENDINERTIA pode não ser necessariamente precedido por WM_STOPINERTIA se o fluxo de entrada do touchpad for curto.

Relatar inércia é importante para lidar corretamente com a entrada do touchpad. Se o conteúdo de uma janela estiver em inércia e não for relatado ao sistema, tocar no touchpad resultará no comportamento normal de um clique (botão esquerdo do mouse e esquerdo para cima). O aplicativo pode acabar tratando essa entrada do mouse como interagindo com o conteúdo em movimento, possivelmente resultando na execução de uma ação que o usuário não pretendia.

Para inércia causada pela entrada por toque ou caneta, o sistema não precisa lidar especialmente com a entrada em relação à inércia, pois a janela cujo conteúdo está em inércia normalmente é a mesma que recebe a entrada subsequente. Para entrada touchpad, em contrário, o sistema toma uma decisão antes que o aplicativo receba qualquer entrada. Relatar inércia causada pela entrada por toque ou caneta ainda é recomendado para que, se o usuário tentar interromper a inércia com o touchpad, o comportamento esperado ocorra.

O sistema só mantém o controle de uma única janela na inércia. Se a inércia já estiver ativa quando essa API for chamada para relatar a inércia começando em uma janela diferente, as informações de inércia anteriores serão substituídas.

Se a inércia de relatório for iniciada, a janela especificada deverá pertencer ao thread atual e o thread deverá ter recuperado a entrada nos últimos dois segundos. Posteriormente, ele deve ser relatado como interrompido quando o movimento de conteúdo da janela for interrompido (a menos que a janela tenha recebido WM_STOPINERTIA ou WM_ENDINERTIA, nesse caso, não é necessário relatar a interrupção da inércia). A interrupção de inércia de relatórios será silenciosamente ignorada se o sistema não estiver mais acompanhando a inércia, se a janela rastreada não corresponder à janela especificada ou se a janela rastreada pertencer a um processo diferente.

Requisitos

Requisito Valor
Cliente mínimo suportado Windows 11 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Nenhum compatível
Cabeçalho Winuser.h (inclua Windows.h)
Biblioteca User32.lib
DLL User32.dll (ordinal 2695)

Consulte também