Здравствуйте, Vlads, Вы писали:
AF>>Чтобы RichEdit отображал картинки, нужно реализовать интерфейс IRichEditOleCallback
AF>>и назначить его органу управления посылкой сообщения EM_SETOLECALLBACK. Во всем
AF>>интерфейсе достаточно иметь осмысленную реализацию только для GetNewStorage,
AF>>остальные методы могут быть заглушками возвращающими S_OK и E_NOTIMPL.
V>А можно примером напутствовать?
//---------------------------------------------------------------------------
// FinalConstruct
//
// Finishes object initialization.
//
// Parameters:
// none.
//
// Returns:
// standard COM return code.
//
HRESULT
CChatEditSite::FinalConstruct()
{
m_nItem = 0;
ULONG dwMode = STGM_READWRITE|STGM_DELETEONRELEASE|STGM_SHARE_EXCLUSIVE;
return StgCreateDocfile(NULL, dwMode, 0, &m_spRootStg);
}
//---------------------------------------------------------------------------
// GetNewStorage (IRichEditOleCallback)
//
// Creates new storage for an object embedded in the rich edit data.
//
// Parameters:
// ppStorage - pointer to a variable that receives the interface pointer
// of a newly created storage object
//
// Returns:
// standard COM return code.
//
STDMETHODIMP
CChatEditSite::GetNewStorage(
OUT IStorage ** ppStorage
)
{
_COM_CHECK_OUT_POINTER(ppStorage, NULL);
WCHAR szItem[16];
_snwprintf(szItem, countof(szItem), L"A%d", +m_nItem);
m_spRootStg->DestroyElement(szItem);
return m_spRootStg->CreateStorage(szItem,
STGM_READWRITE|STGM_SHARE_EXCLUSIVE,
0, 0, ppStorage);
}