Метод IAdviseSink::OnDataChange (objidl.h)
Вызывается сервером для уведомления зарегистрированного объекта данных, уведомляющего приемники об изменении данных в объекте.
Синтаксис
void OnDataChange(
[in] FORMATETC *pFormatetc,
[in] STGMEDIUM *pStgmed
);
Параметры
[in] pFormatetc
Указатель на структуру FORMATETC , которая описывает формат, целевое устройство, отрисовку и сведения о хранилище вызывающего объекта данных.
[in] pStgmed
Указатель на структуру STGMEDIUM , которая определяет среду хранения (глобальную память, файл диска, объект хранилища, объект потока, объект GDI или неопределенный) и владение этим носителем для вызывающего объекта данных.
Возвращаемое значение
None
Remarks
Обработчики объектов и контейнеры объектов ссылок реализуют интерфейс IAdviseSink::OnDataChange для выполнения соответствующих действий при получении уведомления об изменении данных в объекте. Они также должны вызвать IDataObject::D Advise , чтобы настроить консультативные подключения к объектам, данные которых им нужны.
Контейнеры, использующие поддержку кэширования OLE, не нужно регистрировать для уведомлений об изменении данных, так как сведения, необходимые для обновления представления контейнера объекта, включая любые изменения в его данных, хранятся в кэше объекта.
Примечания для разработчиков
При реализации IAdviseSink::OnDataChange для контейнера помните, что этот метод является асинхронным и что выполнение синхронных вызовов в асинхронных методах недопустимо. Поэтому нельзя вызвать IDataObject::GetData для получения данных, необходимых для обновления объекта. Вместо этого вы публикуете внутреннее сообщение или делаете недействительным прямоугольник для измененных данных, вызвав InvalidateRect и дождавшись WM_PAINT сообщения, после чего вы можете получить данные и обновить объект.Сами данные, действительные только в течение всего вызова, передаются с помощью среды хранения, на которую указывает pStgmed. Так как вызывающий объект владеет средой, советная раковина не должна освобождать ее. Кроме того, если pStgmed указывает на интерфейс IStorage или IStream , приемник не должен увеличивать число ссылок.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | objidl.h |