Como métodos/propriedades de acesso do contentor de script

Traduções de Artigos Traduções de Artigos
Artigo: 188015 - Ver produtos para os quais este artigo se aplica.
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Expandir tudo | Reduzir tudo

Sumário

Quando hospedar o controlo WebBrowser numa aplicação Visual C++, poderá ser necessário aceder métodos ou propriedades do contentor a partir do script numa página Web. Este artigo descreve como efectuar este procedimento implementa a interface IDocHostUIHandler.

Mais Informação

Ao implementar a interface IDocHostUIHandler, pode controlar muitas das funcionalidades de interface de utilizador do controlo WebBrowser na aplicação anfitriã. IDocHostUIHandler também lhe permite alargar o modelo do objecto DHTML (Dynamic HTML) para aceder aos métodos e propriedades do contentor de dentro de script.

O método GetExternal() IDocHostUIHandler fornece esta funcionalidade. Quando o script numa página Web chama "window.external.yourMethod", o controlo WebBrowser chama o método GetExternal para obter um apontador para IDispatch da aplicação anfitriã. Está a este ponteiro que o controlo WebBrowser conseguir aceder a métodos e propriedades.

Depois do controlo WebBrowser tem um apontador para IDispatch do contentor, em seguida, chama IDispatch::GetIDsOfNames() obter DISPID do método ou propriedade denominada de script, yourMethod neste caso.

Finalmente, as chamadas de controlo WebBrowser IDispatch::Invoke() com o DISPID obtidas GetIDsOfNames().

Eis os passos que tem de seguir para expandir o modelo de objectos DHTML para conseguir acesso o contentor métodos e propriedades de script:
  1. Implemente IDocHostUIHandler.
  2. Implemente o método IDocHostUIHandler::GetExternal. Definir o IDispatch parâmetro para que o contentor seguinte forma:
    STDMETHOD(GetExternal)(IDispatch** ppDispatch)
    {
       // Assumes you inherit from IDispatch
       *ppDispatch = (IDispatch*)this;
       (*ppDispatch)->AddRef();
    
       return S_OK;
    }
    					
  3. Devolver a distribuição ID (DISPID) do método ou propriedade de GetIDsOfNames. Se tiver adicionado o método ou propriedade utilizando um assistente, este será efectuado por si.
  4. Implementar DISPID do método ou propriedade na implementação de IDispatch::Invoke seguinte forma:
    STDMETHODIMP CAtlBrCon::Invoke(DISPID dispidMember, REFIID riid,
                                   LCID lcid, WORD wFlags,
                                   DISPPARAMS* pDispParams,
                                   VARIANT* pvarResult,
                                   EXCEPINFO* pExcepInfo, UINT* puArgErr)
    {
       switch (dispidMember)
       {
          case DISPID_MYMETHOD_OR_PROPERTY:
             // Do something here
    
          default:
             return E_INVALIDARG;
       }
    
       return S_OK;
    }
    					
  5. Chamar um método ou propriedade do contentor de script assim:
     <SCRIPT LANGUAGE="VBScript">
        Sub SomeControl_OnClick
           window.external.yourMethod
        End Sub
     </SCRIPT>
    					

Referências

Para mais informações sobre as tecnologias descritos neste artigo, consulte a documentação sobre interfaces de anfitrião avançado e IDocHostUIHandler na MSDN Online Web Workshop:
http://msdn.microsoft.com/workshop/
(c) Microsoft Corporation 1998, todos os direitos reservados. Contribuições de Scott Roberts, Microsoft Corporation

Propriedades

Artigo: 188015 - Última revisão: 30 de janeiro de 2014 - Revisão: 2.1
A informação contida neste artigo aplica-se a:
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 4.01 Service Pack 1
  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer 5.5
Palavras-chave: 
kbnosurvey kbarchive kbmt kbfaq kbhowto kbscript kbwebbrowser KB188015 KbMtpt
Tradução automática
IMPORTANTE: 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: 188015

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com