Re[3]: RichEdit с картинками или без ?
От: Alex Fedotov США  
Дата: 21.11.03 17:04
Оценка:
Здравствуйте, 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);
}
-- Alex Fedotov
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.