OleConvertOLESTREAMToIStorage 函式 (ole2.h)
OleConvertOLESTREAMToIStorage 函式會將指定的物件從 OLE 1 儲存模型轉換為 OLE 2 結構化儲存物件,而不需指定簡報數據。
語法
HRESULT OleConvertOLESTREAMToIStorage(
[in] LPOLESTREAM lpolestream,
[out] LPSTORAGE pstg,
[in] const DVTARGETDEVICE *ptd
);
參數
[in] lpolestream
數據流的指標,其中包含 OLE 1 儲存格式之對象的持續性表示。
[out] pstg
OLE 2 結構化儲存物件上 IStorage 介面的指標。
[in] ptd
DVTARGETDEVICE 結構的指標,指定轉譯 OLE 1 對象的目標裝置。
傳回值
除了下列專案之外,此函式還支援標準傳回值 E_INVALIDARG:
備註
此函式會將 OLE 1 物件轉換為 OLE 2 結構化儲存物件。 當新版本的物件應用程式支援 OLE 2 時,使用此函式將 OLE 1 物件更新為 OLE 2 物件。
在專案上,應該建立 lpolestm 參數並加以定位,就如同 OleLoadFromStream 函式呼叫一樣。 在結束時, lpolestm 參數的位置就像從 OleLoadFromStream 函式結束時一樣, 而 pstg 參數包含 OLE 2 儲存物件的未認可持續性表示法。
對於使用原生數據的 OLE 1 物件, OleConvertOLESTREAMToIStorage 函式會傳回 CONVERT10_S_NO_PRESENTATION。 在收到這個傳回值時,呼叫端應該呼叫 IOleObject::Update 以取得簡報數據,以便寫入記憶體。
未使用 OLE 預設快取資源但使用轉換資源的應用程式可以使用替代函式 OleConvertOLESTREAMToIStorageEx,以指定要轉換的簡報數據。 在 OleConvertOLESTREAMToIStorageEx 函式中,會傳遞 從 OLESTREAM 結構讀取的簡報數據,而且新建立的 OLE 2 儲存物件不包含簡報數據流。
下列程式描述使用 OleConvertOLESTREAMToIStorage 的轉換程式。
將 OLE 1 物件轉換為 OLE 2 儲存物件
- 呼叫 StgCreateDocfile 函式 (...,&pstg) ,以建立根 IStorage 物件。
- 使用 OpenFile 或其他 OLE 1 技術) 開啟 OLE 1 檔案 (。
- 從檔案讀取,使用 OLE 1 程式讀取檔案,直到找到 OLE 物件為止。
- 從步驟 1 中建立的根 IStorage 配置 IStorage 物件。
pstg->lpVtbl->CreateStorage(...&pStgChild); hRes = OleConvertIStorageToOLESTREAM(polestm, pStgChild); hRes = OleLoad(pStgChild, &IID_IOleObject, pClientSite, ppvObj);
- 重複步驟 3,直到檔案完全讀取為止。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | ole2.h |
程式庫 | Ole32.lib |
Dll | Ole32.dll |
另請參閱
OleConvertIStorageToOLESTREAMEx