Re[11]: ActiveX и Word.
От: Ростислав Глухов Россия http://www.geocities.com/rg2204/
Дата: 02.08.01 12:53
Оценка:
Здравствуйте Аноним, вы писали:

А>А ведь должен собака(мать его Word) сохранять, сам видел на других контролах ?

А>Уже не знаю чего и придумать.

У меня сохраняет (и читает :)
правда, не всё так как в книжках...
------------------------------------------------
наследование, среди прочего:

public IPersistStreamInitImpl<CXXX>,
public IPersistStorageImpl<CXXX>,

Ком-карта, среди прочего:

COM_INTERFACE_ENTRY(IPersistStreamInit)
COM_INTERFACE_ENTRY2(IPersist, IPersistStreamInit)
COM_INTERFACE_ENTRY(IPersistStorage)


Карта свойств:

BEGIN_PROP_MAP(CXXX)
PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
END_PROP_MAP()

И БОЛЬШЕ НИЧЕГО!!!!!! Даже предопределенные DISPID вырезал :(...

для сохранения дополнительных свойств переопределял InitNew(), Save(), Load()

STDMETHOD(InitNew)()
{
HRESULT hr =
IPersistStreamInitImpl<CAXWControl2>::InitNew();
if(SUCCEEDED(hr))
{
m_bstrMyText = _T("LALALA");
}
return hr;
}

STDMETHOD(Load)(LPSTREAM pStm)
{
HRESULT hr;
hr = IPersistStreamInitImpl<CAXWControl2>::Load(pStm); /// <ССЫЛКА 1>
if(SUCCEEDED(hr))
{
hr = m_bstrMyText.ReadFromStream(pStm);
}
return hr;
}

STDMETHOD(Save)(LPSTREAM pStm, BOOL fClearDirty)
{
HRESULT hr;
hr = IPersistStreamInitImpl<CAXWControl2>::Save(pStm, fClearDirty);
if(SUCCEEDED(hr))
{
hr = m_bstrMyText.WriteToStream(pStm);
if(SUCCEEDED(hr) && fClearDirty)
SetDirty(FALSE);

}
return hr;
}

PS
Коберниченко переопределяет эти методы для сохранения строк
но если в карте свойств есть дополнительные entries, то у меня(ну не знаю...) после позиции <ССЫЛКА 1> hr (при работе с word'ом, м.б.) вовсе и FAILED со всеми вытекающими...(при работе с word'ом, м.б.)
- А Вы что курите?
— Минздрав предупреждает
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.