Com um controle ActiveX em um recipiente de janela do navegador, como faço para detectar quando o usuário muda de guia para longe do ActiveX Control

StackOverflow https://stackoverflow.com/questions/2338071

Pergunta

Eu tenho um controle ActiveX que é colocado em um contêiner de navegador do IE. O controle cria outra janela de diálogo que possui as propriedades WS_POPUP e WS_LAYENADO para poder usar a função SetLayedWindowAttributes (...) para realizar transparência de cores e mistura alfa na parte superior do controle.

Como a propriedade WS_Layered não pode ser usada em conjunto com a propriedade WS_CHILD, o gerenciamento da visibilidade da janela não é automático. Preciso detectar quando o controle ActiveX não está mais visível (ou seja, porque a guia do navegador foi alterada ou minimizada) para que eu possa alterar a visibilidade da janela de sobreposição.

Eu tentei usar algumas das mensagens de janela existentes (WM_) para determinar essa alteração, mas não as vi disparar quando a guia do navegador do IE é alterada. Alguém sabe a melhor maneira de capturar quando essas mudanças de visibilidade estão acontecendo?

Foi útil?

Solução

Se você não está vendo um WM_SHOWWINDOW Notificação, então sua janela está sendo coberta em vez de oculta. Não existe uma mensagem do Windows que lhe dirá quando seu controle ActiveX foi coberto. Você precisa procurar notificações do navegador.

Ou crie uma solução que não use uma janela WS_POPUP. Talvez você possa usar Alphablend Para fazer sua própria chave de cor, em vez de confiar no comportamento alfablend implícito de SetLayeredWindowattributes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top