コンテナ : クライアント アイテムへの通知
更新 : 2007 年 11 月
ここでは、サーバー アプリケーションがクライアント アプリケーションのドキュメント内のアイテムを変更した場合に、MFC フレームワークによって呼び出されるオーバーライド可能関数について説明します。
COleClientItem クラスでは、コンポーネント アプリケーション、つまりサーバー アプリケーションからの要求に応じて呼び出される、オーバーライド可能な関数がいくつか定義されています。これらのオーバーライド可能な関数は、普通、通知として機能します。スクロール、アクティベーション、位置の変更などのイベント、およびユーザーによる編集、アイテム操作の結果などをコンテナ アプリケーションに通知します。
フレームワークは、関数 COleClientItem::OnChange を呼び出してコンテナ アプリケーションへの通知を行います。この関数はオーバーライド可能な関数であり、実装する必要があります。この保護された関数は 2 つの引数を使用します。最初の引数は、サーバーがアイテムを変更した理由を示します。
通知 |
説明 |
---|---|
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 から独自に派生したクラス用にアプリケーション ウィザードが作成した関数を編集し、クライアント アイテム オブジェクトが保持する情報がすべて更新されるようにする必要があります。