RichEdit с картинками или без ?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 24.07.01 19:22
Оценка:
Создал RichEdit control версия 20 имя класса "RichEdit20A"
Пишу в нём всякую хренатень и записываю с помошью ES_STREAMOUT в RTF
Читаю в Microsoft Word 2000 четается форматирование сохранено
Пишу (рисую) в Microsoft Word 2000 навороченый текст сохраняю его в RTF
Читаю его ES_STREAMIN форматирование сохранено
НО !!!!!!!!!
Если вставить в Word BMP файл то при чтении моей программой он не воспроизводится
Попытка впихнуть его с помошью WM_PASTE/ES_PASTESPECIAL также не увенчалась успехом

(Для справки в WordPad Тоже используется RichEdit20A (проверял Spy++) и в нём есть картинки)

В ЧЁМ ДЕЛО ???

(MFC/ATL варианты не придлагать, компилятор Visual C++ 6.0)
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: RichEdit с картинками или без ?
От: Alex Fedotov США  
Дата: 24.07.01 20:32
Оценка:
Здравствуйте adontz, вы писали:

A>Создал RichEdit control версия 20 имя класса "RichEdit20A"

A>Пишу в нём всякую хренатень и записываю с помошью ES_STREAMOUT в RTF
A>Читаю в Microsoft Word 2000 четается форматирование сохранено
A>Пишу (рисую) в Microsoft Word 2000 навороченый текст сохраняю его в RTF
A>Читаю его ES_STREAMIN форматирование сохранено
A>НО !!!!!!!!!
A>Если вставить в Word BMP файл то при чтении моей программой он не воспроизводится
A>Попытка впихнуть его с помошью WM_PASTE/ES_PASTESPECIAL также не увенчалась успехом

Чтобы RichEdit отображал картинки, нужно реализовать интерфейс IRichEditOleCallback
и назначить его органу управления посылкой сообщения EM_SETOLECALLBACK. Во всем
интерфейсе достаточно иметь осмысленную реализацию только для GetNewStorage,
остальные методы могут быть заглушками возвращающими S_OK и E_NOTIMPL.
-- Alex Fedotov
Re[2]: RichEdit с картинками или без ?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 25.07.01 08:02
Оценка:
AF>Чтобы RichEdit отображал картинки, нужно реализовать интерфейс IRichEditOleCallback
AF>и назначить его органу управления посылкой сообщения EM_SETOLECALLBACK. Во всем
AF>интерфейсе достаточно иметь осмысленную реализацию только для GetNewStorage,
AF>остальные методы могут быть заглушками возвращающими S_OK и E_NOTIMPL.

Thanks !!!
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[2]: RichEdit с картинками или без ?
От: Vlads  
Дата: 21.11.03 16:37
Оценка:
Здравствуйте, Alex Fedotov, Вы писали:

AF>Здравствуйте adontz, вы писали:


AF>Чтобы RichEdit отображал картинки, нужно реализовать интерфейс IRichEditOleCallback

AF>и назначить его органу управления посылкой сообщения EM_SETOLECALLBACK. Во всем
AF>интерфейсе достаточно иметь осмысленную реализацию только для GetNewStorage,
AF>остальные методы могут быть заглушками возвращающими S_OK и E_NOTIMPL.

А можно примером напутствовать?
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
Re[3]: RichEdit с картинками или без ?
От: adontz Грузия http://adontz.wordpress.com/
Дата: 22.11.03 00:22
Оценка:
Здравствуйте, Vlads, Вы писали:

V>А можно примером напутствовать?


Если надо осталася рабочий код. Он позволяет вставлять OLE объекты (а рисунки так и вставляются) и вызывать для них редакторы в отдельном окне.
Вообще можно как-то своё окно отдавать в пользование, но помню у меня меню менялояь, а панели иснтрументов не добавлялись, а разьиратся было лень, вот я и сделал редактирование в отдельном окне.

ЗЫ: Боже это было 2 года тому назад, а как сейчас помню... Как всё таки коротка жизнь.
A journey of a thousand miles must begin with a single step © Lau Tsu
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.