Здравствуйте, Jeka_B, Вы писали:
J_B>Что еще нужно сделать, чтоб все заработало? Что я еще забыл?
Скорее всего IBindStatusCallback.
Не знаю как сейчас, но раньше флеш требовал чтобы callback вызывались.
Т.е. в BindToStorage
нужно вызвать что-то типа такого:
HRESULT CCacheMoniker::DoLoad(IN PDATALOADST pDS)
{
LARGE_INTEGER nPos;
ULARGE_INTEGER nNewPos;
nPos.QuadPart = nNewPos.QuadPart = 0;
_S(pDS->pStream->Seek(nPos, STREAM_SEEK_END, &nNewPos));
DWORD dwSize = (DWORD) nNewPos.QuadPart;
CBindingImplObj * pBinder;
_S(CBindingImplObj::CreateInstance(&pBinder));
CComPtr<IBinding> pIBinding;
_S(pBinder->QueryInterface(__uuidof(IBinding), (void **) &pIBinding));
_S(pDS->pOuterCallback->OnStartBinding(0, pIBinding));
_S(pDS->pOuterCallback->OnProgress(dwSize, dwSize,
BINDSTATUS_ENDDOWNLOADDATA, A2W("data fully loaded")));
nPos.QuadPart = 0;
pDS->pStream->Seek(nPos, STREAM_SEEK_SET, &nNewPos);
STGMEDIUM stgmed;
stgmed.pstm = pDS->pStream;
stgmed.tymed = TYMED_ISTREAM;
stgmed.pUnkForRelease = NULL;
_S(pDS->pOuterCallback->OnDataAvailable(
BSCF_LASTDATANOTIFICATION | BSCF_FIRSTDATANOTIFICATION,
dwSize, CF_NULL, &stgmed));
nPos.QuadPart = 0;
pDS->pStream->Seek(nPos, STREAM_SEEK_SET, &nNewPos);
_S(pDS->pOuterCallback->OnStopBinding(S_OK, NULL));
return S_OK;
}
pDS->pOuterCallback - это IBindStatusCallback*
pDS->pStream - это данные