Condividi tramite


Metodo IAdviseSink::OnDataChange (objidl.h)

Chiamato dal server per notificare a un oggetto dati attualmente registrato i sink che i dati nell'oggetto sono stati modificati.

Sintassi

void OnDataChange(
  [in] FORMATETC *pFormatetc,
  [in] STGMEDIUM *pStgmed
);

Parametri

[in] pFormatetc

Puntatore a una struttura FORMATETC , che descrive il formato, il dispositivo di destinazione, il rendering e le informazioni di archiviazione dell'oggetto dati chiamante.

[in] pStgmed

Puntatore a una struttura STGMEDIUM , che definisce il supporto di archiviazione (memoria globale, file di disco, oggetto di archiviazione, oggetto di flusso, oggetto GDI o non definito) e proprietà di tale supporto per l'oggetto dati chiamante.

Valore restituito

nessuno

Osservazioni

Gestori oggetti e contenitori di oggetti collegamento implementano IAdviseSink::OnDataChange per eseguire le procedure appropriate quando si notifica che i dati nell'oggetto sono stati modificati. Devono anche chiamare IDataObject::D Advise per configurare connessioni consultive con gli oggetti nei cui dati sono interessati.

I contenitori che sfruttano il supporto della memorizzazione nella cache ole non devono registrare notifiche di modifica dei dati, perché le informazioni necessarie per aggiornare la presentazione dell'oggetto, incluse le modifiche apportate ai dati, vengono mantenute nella cache dell'oggetto.

Note per gli implementatori

Se si implementa IAdviseSink::OnDataChange per un contenitore, tenere presente che questo metodo è asincrono e che l'esecuzione di chiamate sincrone all'interno di metodi asincroni non è valida. Pertanto, non è possibile chiamare IDataObject::GetData per ottenere i dati necessari per aggiornare l'oggetto. In alternativa, si pubblica un messaggio interno o si invalida il rettangolo per i dati modificati chiamando InvalidateRect e aspettando un messaggio di WM_PAINT , a questo punto si è liberi di ottenere i dati e aggiornare l'oggetto.

I dati stessi, validi solo per la durata della chiamata, vengono passati usando il supporto di archiviazione puntato da pStgmed. Poiché il chiamante possiede il supporto, il sink consigliato non dovrebbe liberarlo. Inoltre, se pStgmed punta a un'interfaccia IStorage o IStream , il sink non deve aumentare il conteggio dei riferimenti.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione objidl.h

Vedi anche

Iadvisesink