Проблема - есть activex и html страничка, использующая этот activex. Хочется в коде страницы написать вот так: <OBJECT ID="test" CLASSID="CLSID:1FB2094D-A5BB-45B3-ADEB-430721ACA618" HEIGHT=300 WIDTH=300> <PARAM NAME="TestProperty" VALUE="test value"/> </OBJECT> однако значение в проперти не присваивается (метод set не вызывается). В разных источниках есть ссылки что в таком случае activex должер реализовывать интерфейсы IObjectSafety и/или IPropertyBag. Реализовал оба. Результат нулевой. Если бы кто поделился рабочим куском кода, который нормально понимает инициализацию через тег PARAM, моей благодарности не было бы границ. В разумных пределах.
это не помогает. Просто в разных местах (сырцы страниц) встречал и с чертой и без. Примеры из мсдн работают и так и так.
разобрался. В моем случае надо было добавить в определение класса Код (Text): class ATL_NO_VTABLE Caxtest : ... public IPersistPropertyBagImpl<Caxtest> ... и самое главное - переписать функции Код (Text): STDMETHOD(Load)(IPropertyBag *pPropBag, IErrorLog *pErrorLog) { VARIANT v; v.vt = VT_BSTR; HRESULT res = pPropBag->Read(L"TestProperty", &v, pErrorLog); if( res == S_OK) put_TestProperty(v.bstrVal); return S_OK; } STDMETHOD(Save)(IPropertyBag *pPropBag, BOOL fClearDirty, BOOL fSaveAllProperties) { VARIANT v; v.vt = VT_BSTR; get_TestProperty(&v.bstrVal); pPropBag->Write(L"TestProperty", &v); return S_OK; } Самое противное то, что они в IPersistPropertyBagImpl по дефолту реализованы пустыми. Лучше бы их там вообще не реализовывали, тогда хотя-бы компилятор ругался бы что он cannot instantiate abstract class. А так все тихо и ничего не работает