Здравствуйте, AndrewJD, Вы писали:
AJD>Здравствуйте, Jeka_B, Вы писали:
J_B>>Пытаюсь сделать свой Flash ActiveX контейнер. Загружаю SWF файл в котором есть относительные пути к некоторым ресурсам. Доступ к ресурсам хочу реализовать через моникеры. Добрался уже к ним. Реализовал свой класс моникера и теперь вызывается функция BindToStorage в которой я указываю указатель на свой класс IStream (можно назвать его MyStream). Но после этого ничего больше не происходит !!! Что еще нужно сделать чтоб началась загрузка контента через мой клас MyStream. (Я установил у всех функциях Trace но там так ни разу ни одна функция и не вызвалсь, обращения к MyStream не было)
J_B>>Что я делаю не так? Что нужно еще сделать?
AJD>Не совсем понятно, что ты пытаешься сделать. Если ты хочешь загружать SWF из флеша используя моникеры, то это твоя обязанность загрузить данные и вернуть IStream
Постараюсь обьяснить более детально
Я в свой Flash ActiveX контейнер уже загрузил SWF файл. В этом файле есть некоторые ресурсы которые он использует, там прописаны относительные ссылки вроде images/image1.xxx или properties.prop (ну и тому подобные)
Через интерфейс IBindHost а точнее через функцию этого интерфейса CreateMoniker я возвращаю ему свой клас порожденный от IMoniker
HRESULT STDMETHODCALLTYPE IBindHost::CreateMoniker(
IN LPOLESTR szName,
IN IBindCtx *pBC,
OUT IMoniker **ppmk,
IN DWORD dwReserved))
{
CMyMoniker *pMoniker = new CMyMoniker(szName);
if (pMoniker != NULL)
{
*ppmk = pMoniker;
return S_OK;
}
else
{
return E_OUTOFMEMORY;
}
}
далее в моем класе созданого ранее мокинера вызывается функция BindToStorage:
HRESULT STDMETHODCALLTYPE CMyMoniker::BindToStorage(
IN IBindCtx *pbc,
IN IMoniker *pmkToLeft,
IN REFIID riid,
OUT void **ppvObj)
{
if (riid == IID_IStream)
{
//моникер создается в конструкторе класа
if (m_pMonikerStream != NULL)
{
m_pMonikerStream->AddRef();
*ppvObj = m_pMonikerStream;
}
else
{
return E_OUTOFMEMORY;
}
}
return MK_E_NOSTORAGE;
}
Проблема в том что никакие функции моего класса m_pMonikerStream (порожденного от IStream) не вызываются (проверено трейсами). Рисунок (если моникер Images/Image1.xxx) не загружается
Что еще нужно сделать, чтоб все заработало? Что я еще забыл?