次の方法で共有


コンテナー : クライアント アイテムへの通知

この記事では、サーバー アプリケーションがクライアント アプリケーションのドキュメント内の項目を変更するときに MFC フレームワークが呼び出すオーバーライド可能な関数について説明します。

COleClientItem は、コンポーネント アプリケーション (サーバー アプリケーションとも呼ばれる) からの要求に応答して呼び出されるいくつかのオーバーライド可能な関数を定義します。 通常、これらのオーバーライド可能な関数は通知として機能します。 スクロール、アクティブ化、位置の変更など、さまざまなイベントや、項目を編集または操作するときにユーザーが行った変更をコンテナー アプリケーションに通知します。

フレームワークは、COleClientItem::OnChange に対する呼び出しを通じてコンテナー アプリケーションに変更を通知します。これは、実装が必要なオーバーライド可能な関数です。 この保護された関数は、2 つの引数を受け取ります。 1 つ目は、サーバーが項目を変更した理由を指定します。

Notification 意味
OLE_CHANGED OLE 項目の外観が変更されました。
OLE_SAVED OLE 項目が保存されています。
OLE_CLOSED OLE 項目が閉じられました。
OLE_RENAMED OLE 項目を含むサーバー ドキュメントの名前が変更されました。
OLE_CHANGED_STATE OLE 項目が、ある状態から別の状態に変更されました。
OLE_CHANGED_ASPECT OLE 項目の描画の側面が、フレームワークによって変更されました。

これらの値は、AFXOLE.H に定義されている OLE_NOTIFICATION 列挙型からの値です。

この関数の 2 番目の引数は、項目がどのように変更されたのか、またはどの状態になったのかを指定します。

最初の引数 2 番目の引数
OLE_SAVED または OLE_CLOSED 使用されません。
OLE_CHANGED 変更された OLE 項目の側面を指定します。
OLE_CHANGED_STATE 現在の状態を説明します (emptyStateloadedStateopenStateactiveState、または activeUIState)。

クライアント項目で想定できる状態の詳細については、「コンテナー: クライアント アイテムの状態」を参照してください。

インプレース編集を行うために項目がアクティブ化されると、フレームワークは COleClientItem::OnGetItemPosition を呼び出します。 インプレース編集をサポートしているアプリケーションでは、実装が必要です。 MFC アプリケーション ウィザードには基本的な実装が用意されており、これは、OnGetItemPosition への引数として渡される CRect オブジェクトに対する項目の座標を割り当てます。

インプレース編集中に OLE 項目の位置またはサイズが変わると、項目の位置とクリッピング四角形に関するコンテナーの情報を更新し、サーバーが変更に関する情報を受け取れるようにする必要があります。 これを行うために、フレームワークは COleClientItem::OnChangeItemPosition を呼び出します。 MFC アプリケーション ウィザードは、基本クラスの関数を呼び出すオーバーライドを提供します。 アプリケーション ウィザードが COleClientItem 派生クラスに関して書き込む関数を編集して、クライアント項目オブジェクトによって保持されている情報を、関数が更新できるようにする必要があります。

関連項目

Containers
コンテナー: クライアント アイテムの状態
COleClientItem::OnChangeItemPosition