コンテナー : クライアント アイテムへの通知
この記事では、サーバー アプリケーションがクライアント アプリケーションのドキュメント内の項目を変更するときに 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 | 現在の状態を説明します (emptyState、loadedState、openState、activeState、または activeUIState)。 |
クライアント項目で想定できる状態の詳細については、「コンテナー: クライアント アイテムの状態」を参照してください。
インプレース編集を行うために項目がアクティブ化されると、フレームワークは COleClientItem::OnGetItemPosition
を呼び出します。 インプレース編集をサポートしているアプリケーションでは、実装が必要です。 MFC アプリケーション ウィザードには基本的な実装が用意されており、これは、OnGetItemPosition
への引数として渡される CRect
オブジェクトに対する項目の座標を割り当てます。
インプレース編集中に OLE 項目の位置またはサイズが変わると、項目の位置とクリッピング四角形に関するコンテナーの情報を更新し、サーバーが変更に関する情報を受け取れるようにする必要があります。 これを行うために、フレームワークは COleClientItem::OnChangeItemPosition
を呼び出します。 MFC アプリケーション ウィザードは、基本クラスの関数を呼び出すオーバーライドを提供します。 アプリケーション ウィザードが COleClientItem
派生クラスに関して書き込む関数を編集して、クライアント項目オブジェクトによって保持されている情報を、関数が更新できるようにする必要があります。
関連項目
Containers
コンテナー: クライアント アイテムの状態
COleClientItem::OnChangeItemPosition