Share via


IOleObject::Close メソッド (oleidl.h)

埋め込みオブジェクトを実行中から読み込み状態に変更します。 リンク オブジェクトをリンク ソースから切断します。

構文

HRESULT Close(
  [in] DWORD dwSaveOption
);

パラメーター

[in] dwSaveOption

読み込まれた状態への遷移の一部としてオブジェクトを保存するかどうかを示します。 有効な値は、列挙 OLECLOSE から取得されます。

メモ OLE 2 ユーザー モデルでは、リンクされたオブジェクトや埋め込みオブジェクトを保存する前に、オブジェクト アプリケーションでユーザーにプロンプトを表示しないことをお勧めします。アクティブ化されたオブジェクトも含まれます。 このポリシーは、OLE 1 ユーザー モデルからの変更を表します。オブジェクト アプリケーションは、変更を保存するかどうかをユーザーに常に求めます。
 

戻り値

このメソッドは、成功したS_OKを返します。 その他の可能な戻り値は次のとおりです。

リターン コード 説明
OLE_E_PROMPTSAVECANCELLED
ユーザーは保存を求められたが、プロンプト メッセージ ボックスから [キャンセル ] ボタンを選択した。

注釈

呼び出し元へのメモ

コンテナー アプリケーションは、実行中の 状態から読み込まれた状態にオブジェクトを移動する場合に IOleObject::Close を呼び出します。 このような呼び出しの後、オブジェクトは引き続きコンテナーに表示されますが、編集用に開いていません。 読み込まれているが実行されていないオブジェクトに対して IOleObject::Close を 呼び出しても、効果はありません。 リンクされたオブジェクトを閉じるということは、単にそれを切断することを意味します。

実装者へのメモ

IOleObject::Close の呼び出しを受信すると、実行中のオブジェクトは次の操作を行う必要があります。
  • 編集のために最後に開いた後にオブジェクトが変更された場合は、 dwSaveOption で指定された手順に従って、保存するかどうかを要求する必要があります。 オプションが オブジェクトを保存する場合は、コンテナーの IOleClientSite::SaveObject インターフェイスを呼び出す必要があります。
  • オブジェクトに ADVF_DATAONSTOP フラグを持つ IDataObject::D Advise 接続がある場合は、IAdviseSink::OnDataChange 通知を送信する必要があります。 詳細については、「 IDataObject::D Advise 」を参照してください。
  • オブジェクトが現在クリップボードを所有している場合は、 OleFlushClipboard を呼び出してクリップボードを空にする必要があります。
  • オブジェクトが現在表示されている場合は、fshow 引数を FALSE に設定して IOleClientSite::OnShowWindow を呼び出してコンテナーに通知します
  • IAdviseSink::OnClose 通知を適切なアドバイス シンクに送信します。
  • 最後に、 CoDisconnectObject を呼び出して、すべてのリモート処理クライアントを強制的に切断します。
オブジェクト アプリケーションがローカル サーバー (DLL ではなく EXE) の場合は、オブジェクトを閉じると、オブジェクト アプリケーションもシャットダウンする必要があります。ただし、オブジェクト アプリケーションが他の実行中のオブジェクトをサポートしているか、実行中の状態を維持する別の理由がある場合を除きます。 このような理由としては、 IClassFactory::LockServer ロックの存在、アプリケーションのエンドユーザー制御、アプリケーションへのアクセスを必要とする他の開いているドキュメントの存在などが考えられます。

リンクされたオブジェクトで IOleObject::Close を 呼び出すと、ソース アプリケーションから切断されますが、シャットダウンされません。 オブジェクトを閉じたときにユーザーに表示されるソース アプリケーションは、切断後も表示され、実行中のままであり、リンク コンテナーに IAdviseSink::OnClose 通知を送信しません。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー oleidl.h

こちらもご覧ください

CoDisconnectObject

IAdviseSink::OnClose

IClassFactory::LockServer

IDataObject::D Advise

IOleClientSite::OnShowWindow

IOleClientSite::SaveObject

IOleObject

OLECLOSE

OleFlushClipboard