Artigo: 246247 - Última revisão: quinta-feira, 11 de Maio de 2006 - Revisão: 4.0 Como receber eventos de documento HTML para WebBrowser anfitrião
Nesta páginaSumárioOs programadores que hospedem o controlo WebBrowser no Microsoft Visual C++ ou Visual Basic frequentemente pretende receber eventos para o documento actualmente carregado. Isto é muito útil para fornecer comportamento global que os autores de browser pretendem implementar todas as páginas dentro a experiência de utilizador, tais como agarrando informações externas sobre uma hiperligação seleccionada ou uma parte de texto seleccionado. A estratégia de Visual C++ e Visual Basic geral é:
Mais InformaçãoVisual C++ (ATL)O primeiro de negócio da encomenda no Visual C++ é criar o evento de pias. Dois "event sinks" tem de ser criado: um para DWebBrowserEvents2 para o controlo WebBrowser e outra para HtmlDocumentEvents (definido no MSHTML.H) para o documento de biblioteca de modelo de Active Directory (ATL) real.O receptor DWebBrowserEvents2 pode ser implementado muito rapidamente utilizando IDispEventImpl do ATL, conforme descrito o seguinte artigo da base de dados de conhecimento da Microsoft: 194179
(http://support.microsoft.com/kb/194179/
)
AtlEvnt.exe exemplo mostra como cria ATL PIAs utilizando as classes ATL IDispEventImpl e IDispEventSimpleImpl Porque haverá um novo documento sempre que o utilizador navega para uma nova página, tem de receber os eventos de documento sempre que o controlo WebBrowser lança o evento DocumentComplete. No seu processador DocumentComplete, utilize o seguinte código para receber eventos de documento: 180366
(http://support.microsoft.com/kb/180366/
)
Como determinar quando é efectuada uma página carregado no controlo WebBrowser O receptor de eventos de documento HTML tem de incluir os ficheiros <MSHTML.h> e <MSHTMDID.h> (que define todos os DISPID para HTMLDocumentEvents).Processadores de eventos para eventos de documento cancelável devem devolver um valor boleano no parâmetro do método IDispatch::Invoke() pvarResult. Um valor de VARIANT_TRUE indica que Internet Explorer deverá efectuar o suas próprias processamento de eventos; um valor de VARIANT_FALSE cancela o evento. Por este motivo, deve substituir Invoke() directamente em vez de utilizar uma implementação de atalho como IDispEventImpl do ATL, que não lhe permitirá alterar o pvarResult. Para substituir Invoke() com êxito de um receptor de eventos ATL, consulte o seguinte artigo na base de dados de conhecimento da Microsoft: 181277
(http://support.microsoft.com/kb/181277/
)
O exemplo AtlSink.exe demonstra como implementar um receptor dispinterface utilizando o Active Directory modelo de biblioteca (ATL) no Visual C++ O código de receptor seguinte mostra como pode ser substituída Invoke() para processar o evento clicar (DISPID_CLICK): Visual BasicO processo no Visual Basic é o mesmo: sink de eventos de documentos no evento DocumentComplete para o objecto WebBrowser. Felizmente, o processo de evento sinking é reduzido utilizando palavra-chave WithEvents do Visual Basic em cooperação com uma declaração de variável.Partindo do princípio que o WebBrowser chama WebBrowser1 e adicionado Microsoft HTML Object Library ao projecto, o seguinte código funciona exactamente o mesmo que o código do C++: ReferênciasPara obter mais informações sobre como desenvolver soluções baseadas na Web para o Microsoft Internet Explorer, visite os seguintes Web sites da Microsoft: http://msdn.microsoft.com/ie/
(http://msdn.microsoft.com/ie/)
http://support.microsoft.com/iep (http://support.microsoft.com/iep) A informação contida neste artigo aplica-se a:
Tradução automáticaIMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado. Clique aqui para ver a versão em Inglês deste artigo: 246247
(http://support.microsoft.com/kb/246247/en-us/
)
| Outros Recursos Outros Sites de Suporte
ComunidadesObtenha Ajuda AgoraTraduções de Artigos
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email



Voltar ao topo