資料物件和資料來源:管理
在資料物件或資料來源建立之後,您可以對資料的一些一般作業,例如插入,並移除資料,列舉格式資料等等。 本文說明必要的技術完成最常見的作業。 主題包括:
將資料插入至資料來源
判斷格式可用資料物件
從資料物件擷取資料物件。
將資料插入至資料來源
資料的方式插入資料來源取決於是否立即提供資料或控制項,因此,在哪媒體它提供。 可能值如下。
提供的資料立即 (立即計算色彩)
呼叫以 COleDataSource::CacheGlobalData 為您提供資料的每個剪貼簿格式。 透過剪貼簿格式會用的控制代碼,記憶體中的資料,而且,或者,描述資料的 FORMATETC 結構。
-或-
如果您想要直接使用 STGMEDIUM 結構時,呼叫 COleDataSource::CacheData 而不是在上面選項的 COleDataSource::CacheGlobalData 。
提供的資料控制項 (延遲轉譯)
這是一個進階主題。
呼叫以 COleDataSource::DelayRenderData 為您提供資料的每個剪貼簿格式。 透過剪貼簿格式將使用,而且,或者,描述資料的 FORMATETC 結構。 當資料要求,架構會呼叫 COleDataSource::OnRenderData,就必須覆寫。
-或-
如果您使用 CFile 物件提供資料,請呼叫 COleDataSource::DelayRenderFileData 而不是在上一個索引標籤的 COleDataSource::DelayRenderData 。 當資料要求,架構會呼叫 COleDataSource::OnRenderFileData,就必須覆寫。
判斷格式可用資料物件
在應用程式允許使用者貼上資料至之前,它必須知道是否有在它可以處理的剪貼簿格式。 若要這樣做,您的應用程式應該執行下列作業:
建立 COleDataObject 物件和 FORMATETC 結構。
呼叫資料物件的 AttachClipboard 成員函式相關聯的資料物件與剪貼簿上的資料。
執行下列任一步驟:
呼叫資料物件的 IsDataAvailable 成員函式是否只需要的兩種格式。 在剪貼簿上的資料與您的應用程式所支援的格式,這樣可以節省時間。
-或-
呼叫資料物件的 BeginEnumFormats 成員函式開始列舉格式可用在剪貼簿上。 然後呼叫 GetNextFormat ,直到剪貼簿格式傳回應用程式支援或沒有其他格式。
如果您使用 ON_UPDATE_COMMAND_UI,您現在可以使貼上,而,可能,貼在編輯功能表的特殊項目。 若要這麼做,請呼叫 CMenu::EnableMenuItem 或 CCmdUI::Enable。 如需功能的詳細資訊容器應用程式應該對功能表項目,然後,如果為,請參閱 功能表和資源:加入容器。
從資料物件擷取資料
一旦決定了資料格式,所有保持為從資料物件擷取資料。 若要這樣做,使用者在何處決定放置資料,因此,應用程式會呼叫適當的函式。 資料在下列媒體其中之一可以:
中 |
呼叫的函式 |
---|---|
全域記憶體 (HGLOBAL) |
COleDataObject::GetGlobalData |
檔案 (CFile) |
COleDataObject::GetFileData |
STGMEDIUM 結構 (IStorage) |
COleDataObject::GetData |
通常,媒體會使用自己的剪貼簿格式一起指定。 例如, CF_EMBEDDEDSTRUCT 物件永遠在需要 STGMEDIUM 的 IStorage 和媒體。 因此,您會使用 GetData ,因為它是可以接受 STGMEDIUM 結構的它在這些函式。
如果剪貼簿格式在 IStream 或 HGLOBAL 媒體的情況下,架構可以提供參考資料的 CFile 指標。 應用程式可以使用讀取的檔案取得資料,以與它可能匯入資料從檔案相同。 基本上,這是用戶端介面至資料來源的 OnRenderData 和 OnRenderFileData 常式。
使用者現在可以將資料插入至文件像在相同格式的其他資料。