共用方式為


IAdviseSink::OnDataChange 方法 (objidl.h)

由伺服器呼叫,以通知目前已註冊的數據對象,建議接收物件中的數據已變更。

語法

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

參數

[in] pFormatetc

FORMATETC 結構的指標,描述呼叫數據物件的格式、目標裝置、轉譯和儲存資訊。

[in] pStgmed

STGMEDIUM 結構的指標,其定義儲存媒體 (全域記憶體、磁碟檔、儲存物件、數據流物件、GDI 物件,或該媒體的) 和擁有權,以供呼叫數據物件使用。

傳回值

備註

鏈接物件的物件處理程式和容器會實作 IAdviseSink::OnDataChange ,以在通知物件中的數據已變更時採取適當的步驟。 他們也必須呼叫 IDataObject::D Advise ,以設定與其感興趣的數據中對象的諮詢連線。

利用 OLE 快取支援的容器不需要註冊數據變更通知,因為更新容器呈現物件所需的資訊,包括其數據中的任何變更,都保留在物件的快取中。

實作者的注意事項

如果您為容器實作 IAdviseSink::OnDataChange ,請記住此方法是異步的,而且在異步方法中進行同步呼叫無效。 因此,您無法呼叫 IDataObject::GetData 來取得更新物件所需的數據。 相反地,您可以張貼內部訊息,或呼叫 InvalidateRect 並等候 WM_PAINT 訊息,讓變更數據的矩形失效,此時您可以取得數據並更新物件。

數據本身只有在呼叫期間才有效,會使用 pStgmed 所指向的儲存媒體傳遞。 由於呼叫端擁有媒體,因此建議接收不應釋出。 此外,如果 pStgmed 指向 IStorageIStream 介面,接收不得遞增參考計數。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 objidl.h

另請參閱

IAdviseSink