S>Есть ActiveX компонент, который внедрен в обычную веб-страницу. Очень хочется передать из этого компонента, некоторое изображение, и (видимо через JavaScript) отобразить его рядом с этим компонентом (например как <img/>).
S>Подскажите как это можно сделать?.. В какую сторону копать?
Реализовать свой Pluggable протокол (на этом сайте ЕМНИП была статья с примером) и отдавать картинку через него, типа
document.all("imgID").src="mycoolprotocol://Picture123";
Ещё один вариант — попробывать реализовать свой behaviour который будет эту картинку рисовать. Возможно, он будет проще в педаляже но тут надо искать примеры.
... << RSDN@Home 1.2.0 alpha rev. 717>>
Здравствуйте, Shergin, Вы писали:
S>Здравствуйте!
S>Такая проблема:
S>Есть ActiveX компонент, который внедрен в обычную веб-страницу. Очень хочется передать из этого компонента, некоторое изображение, и (видимо через JavaScript) отобразить его рядом с этим компонентом (например как <img/>).
S>Подскажите как это можно сделать?.. В какую сторону копать?
S>Спасибо!
У твоего ActiveX-а есть IOleClientSite
у него надо попросить IOleContainer м-м GetContainer
далее IHTMLDocument2 и можешь вставлять что хочешь...
Вот код, правда на ВСВ, при нажатии на кнопку в ActiveX-форме, находится некий инпут и выводится его содержимое:
void __fastcall TActiveFormX::Button1Click(TObject *Sender)
{
CComPtr<IOleClientSite> pClientSite;
WideString wsURL;
m_pActiveFormXImpl->GetClientSite(&pClientSite);
if(pClientSite==NULL ){
ShowMessage("pClientSite NULL");
return;
}
CComPtr<IOleContainer> spContainer;
pClientSite->GetContainer(&spContainer);
CComQIPtr<IHTMLDocument2, &IID_IHTMLDocument2> spDoc(spContainer);
if( spDoc )
{
CComPtr<IHTMLElementCollection> pCollection;
spDoc->get_all(&pCollection);
if( pCollection )
{
CComPtr<IDispatch> pDisp;
pCollection->item(TVariant(WideString("GoURL")), TVariant(0), &pDisp);
if( pDisp )
{
CComQIPtr<IHTMLInputElement> pElement(pDisp);
if( pElement )
{
pElement->get_value(&wsURL);
ShowMessage(wsURL);
}
}
}
}
}