Создал 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)
Здравствуйте 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.
AF>Чтобы RichEdit отображал картинки, нужно реализовать интерфейс IRichEditOleCallback AF>и назначить его органу управления посылкой сообщения EM_SETOLECALLBACK. Во всем AF>интерфейсе достаточно иметь осмысленную реализацию только для GetNewStorage, AF>остальные методы могут быть заглушками возвращающими S_OK и E_NOTIMPL.
Здравствуйте, Alex Fedotov, Вы писали:
AF>Здравствуйте adontz, вы писали:
AF>Чтобы RichEdit отображал картинки, нужно реализовать интерфейс IRichEditOleCallback AF>и назначить его органу управления посылкой сообщения EM_SETOLECALLBACK. Во всем AF>интерфейсе достаточно иметь осмысленную реализацию только для GetNewStorage, AF>остальные методы могут быть заглушками возвращающими S_OK и E_NOTIMPL.
Здравствуйте, 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);
}
Здравствуйте, Vlads, Вы писали:
V>А можно примером напутствовать?
Если надо осталася рабочий код. Он позволяет вставлять OLE объекты (а рисунки так и вставляются) и вызывать для них редакторы в отдельном окне.
Вообще можно как-то своё окно отдавать в пользование, но помню у меня меню менялояь, а панели иснтрументов не добавлялись, а разьиратся было лень, вот я и сделал редактирование в отдельном окне.
ЗЫ: Боже это было 2 года тому назад, а как сейчас помню... Как всё таки коротка жизнь.