Как методы и свойства доступа контейнера из сценария

Переводы статьи Переводы статьи
Код статьи: 188015 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

Аннотация

При размещении элемента управления WebBrowser, в приложении Visual C++, может потребоваться доступ к методам и свойствам контейнера из сценария на веб-странице. В данной статье описывается, как это сделать, реализуя интерфейс IDocHostUIHandler.

Дополнительная информация

Путем реализации интерфейса IDocHostUIHandler, можно контролировать многие функции пользовательского интерфейса для элемента управления WebBrowser размещения приложения. IDocHostUIHandler можно расширить в объектной модели динамического HTML (DHTML) для доступа к методам и свойствам контейнера из сценария.

Эта функциональность метода GetExternal() IDocHostUIHandler. Когда сценарий на веб-странице вызывает «window.external.yourMethod», элемент управления WebBrowser вызывает метод GetExternal для получения указателя интерфейса IDispatch размещения приложения. Это через этот указатель элемент управления WebBrowser является возможность доступа к методам и свойствам.

Если элемент управления WebBrowser имеет указатель на IDispatch контейнера, затем он вызывает IDispatch::GetIDsOfNames() получить идентификатор DISPID для метода или свойства в этом случае вызывается из сценария, yourMethod.

Наконец вызовы элемента управления WebBrowser IDispatch::Invoke() с DISPID получены из GetIDsOfNames().

Ниже перечислены шаги, которые необходимо выполнить для расширения объектной модели DHTML, чтобы иметь возможность доступа к методам и свойствам контейнера из сценария.
  1. Реализация IDocHostUIHandler.
  2. Реализуйте метод IDocHostUIHandler::GetExternal. Задать IDispatch параметр контейнера, который следующим образом:
    STDMETHOD(GetExternal)(IDispatch** ppDispatch)
    {
       // Assumes you inherit from IDispatch
       *ppDispatch = (IDispatch*)this;
       (*ppDispatch)->AddRef();
    
       return S_OK;
    }
    					
  3. Вернуть GetIDsOfNames диспетчеризации ID (DISPID), метода или свойства. Если был добавлен метод или свойство, с помощью мастера, это будет сделать для вас.
  4. Реализация метода или свойства в пользовательской реализации IDispatch::Invoke идентификатор DISPID следующим образом:
    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. Вызовите метод или свойство контейнера из сценария следующим образом:
     <SCRIPT LANGUAGE="VBScript">
        Sub SomeControl_OnClick
           window.external.yourMethod
        End Sub
     </SCRIPT>
    					

Ссылки

Для получения дополнительных сведений о технологии, описанные в этой статье обратитесь к документации по дополнительные интерфейсы размещения и IDocHostUIHandler в MSDN Online Web семинар по:
http://MSDN.Microsoft.com/Workshop/
(c) Корпорация Майкрософт 1998 года, все права защищены. Вклад Скотт Корепиным, корпорация Майкрософт

Свойства

Код статьи: 188015 - Последний отзыв: 15 ноября 2010 г. - Revision: 2.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Internet Explorer 4.01 Service Pack 1
Ключевые слова: 
kbFAQ kbhowto kbscript kbwebbrowser kbmt KB188015 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке: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