Re[3]: ActiveX, запись настроек
От: Vi2 Удмуртия http://www.adem.ru
Дата: 24.04.12 12:20
Оценка:
Здравствуйте, GladiatorX, Вы писали:

GX>После этого перестали сохраняться и загружаться стандартные свойства кнопки.

GX>Как мне сохранять и считывать все свойства моей кнопки?

Что сохранишь, то и поимеешь. Каждый IPersistXXXX имеет свою собственную семантику, и какой из них лучше — хз. Иногда определяется контейнером: именно контейнер определяет тип хранилища. Иногда он сам упаковывает один тип хранилища в другое, чтобы не насиловать сам контрол.

IPersistXXXX.Load загружает из хранилища XXXX данные. Если ты оттуда читать не будешь, значит, свойства контрола будут такими, как при создании контрола. IPersistXXXX.Save сохраняет в хранилище XXXX данные. Если ты туда писать не будешь, значит, и оттуда нечего читать будет.

IPersistStream::Load(IStream *pStm), следовательно, твой контрол должен читать из pStm его методами свои данные, т.е. используя IStream::Read(void *pv, ULONG cb, ULONG *pcbRead). Что-то наподобие:
hr = pStm->Read(&coordX, sizeof(coordX), NULL);
hr = pStm->Read(&coordY, sizeof(coordY), NULL);

IPersistPropertyBag::Load(IPropertyBag *pPropBag, IErrorLog *pErrorLog), следовательно, твой контрол должен читать из pPropBag его методами свои свои данные, т.е. используя IPropertyBag::Read(LPCOLESTR pszPropName, VARIANT *pVar, IErrorLog *pErrorLog). Что-то наподобие:
hr = pPropBag->Read(L"coordX", &v, NULL); coordX присвоить из v;
hr = pPropBag->Read(L"coordY", &v, NULL); coordY присвоить из v;
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.