Comment faire pour Access méthodes/propriétés de conteneur à partir du script

Traductions disponibles Traductions disponibles
Numéro d'article: 188015 - Voir les produits auxquels s'applique cet article
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Agrandir tout | Réduire tout

Résumé

Lorsque vous hébergez le contrôle WebBrowser dans une application Visual C++, il peut être nécessaire pour accéder aux méthodes ou propriétés du conteneur à partir d'un script sur une page Web. Cet article décrit comment procéder en implémentant l'interface IDocHostUIHandler.

Plus d'informations

En implémentant l'interface IDocHostUIHandler, vous pouvez contrôler la plupart des fonctionnalités d'interface utilisateur du contrôle WebBrowser dans votre application d'hébergement. IDocHostUIHandler également vous permet d'étendre le modèle d'objet DHTML (Dynamic HTML) pour accéder aux méthodes et propriétés du conteneur de script.

La méthode GetExternal() de IDocHostUIHandler fournit cette fonctionnalité. Lorsque le script sur une page Web appelle «window.external.yourMethod», le contrôle WebBrowser appelle votre méthode GetExternal pour récupérer un pointeur vers le IDispatch de votre application hôte. Il est par ce pointeur que le contrôle WebBrowser est capable d'accéder à vos méthodes et propriétés.

Une fois que le contrôle WebBrowser a un pointeur vers le IDispatch du conteneur, il appelle ensuite IDispatch::GetIDsOfNames() pour obtenir le DISPID de la méthode ou propriété appelée à partir d'un script, yourMethod dans ce cas.

Enfin, les appels de contrôle WebBrowser IDispatch::Invoke () avec le DISPID extraite GetIDsOfNames().

Voici les étapes à suivre pour étendre le modèle d'objet DHTML pour pouvoir accéder au conteneur méthodes et propriétés à partir du script :
  1. Mettre en ?uvre IDocHostUIHandler.
  2. Implémentez la méthode IDocHostUIHandler::GetExternal. Définir la IDispatch paramètre à celui de votre conteneur comme suit :
    STDMETHOD(GetExternal)(IDispatch** ppDispatch)
    {
       // Assumes you inherit from IDispatch
       *ppDispatch = (IDispatch*)this;
       (*ppDispatch)->AddRef();
    
       return S_OK;
    }
    					
  3. Retourner l'expédition ID (DISPID) de votre méthode ou propriété de GetIDsOfNames. Si vous avez ajouté votre méthode ou propriété à l'aide d'un Assistant, cela sera effectuée pour vous.
  4. Mettre en ?uvre le DISPID de votre méthode ou propriété dans votre implémentation de IDispatch::Invoke comme suit :
    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. Appeler une méthode ou une propriété du conteneur à partir d'un script comme suit :
     <SCRIPT LANGUAGE="VBScript">
        Sub SomeControl_OnClick
           window.external.yourMethod
        End Sub
     </SCRIPT>
    					

Références

Pour plus d'informations sur les technologies abordées dans cet article, reportez-vous à la documentation concernant les avancées les interfaces d'hébergement et IDocHostUIHandler dans MSDN Online Web Workshop :
http://msdn.microsoft.com/workshop/
(c) 1998 Microsoft Corporation, tous droits réservés. Contribution de Scott Roberts, Microsoft Corporation

Propriétés

Numéro d'article: 188015 - Dernière mise à jour: jeudi 23 janvier 2014 - Version: 2.1
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Internet Explorer 4.0 Édition 128 bits
  • 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
Mots-clés : 
kbnosurvey kbarchive kbmt kbfaq kbhowto kbscript kbwebbrowser KB188015 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 188015
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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