コンテナー : クライアント アイテムの状態
この記事では、クライアント アイテムがその有効期間にたどるさまざまな状態について説明します。
クライアント アイテムは、その作成、アクティブ化、変更、保存の過程でいくつかの状態をたどります。 アイテムの状態が変化するたびに、OLE_CHANGED_STATE 通知を伴って COleClientItem::OnChange がフレームワークから呼び出されます。 第 2 パラメーターは、COleClientItem::ItemState
列挙型の値です。 次のいずれかを指定できます。
COleClientItem::emptyState
COleClientItem::loadedState
COleClientItem::openState
COleClientItem::activeState
COleClientItem::activeUIState
emptyState のクライアント アイテムは、まだ不完全な状態です。 メモリは割り当てられていますが、まだ OLE 項目のデータで初期化されていません。 クライアント アイテムは通常 2 つのステップで作成されますが、これは、new
の呼び出しによってクライアント アイテムは作成されたものの、まだ第 2 のステップが済んでいないときの状態です。
COleClientItem::CreateFromFile
または別の CreateFrom
xxxx 関数の呼び出しを通じて実行された第 2 のステップで、アイテムは完全に作成されます。 ファイルや他のソース (クリップボードなど) からの OLE データは、COleClientItem
から派生したオブジェクトに関連付けられています。 この段階でアイテムは loadedState になります。
コンテナーのドキュメント内の所定の位置ではなくサーバーのウィンドウで開かれているアイテムは、openState (完全に開いている) 状態となります。 通常、この状態では、コンテナーのウィンドウに描出されたアイテム上に、どこか他の場所でアクティブになっていることを示す網目模様が描画されます。
インプレースでアクティブ化されると、アイテムは activeState になります。この状態になるのは通常、ほんの少しの間だけです。 その後、activeUIState に移行し、メニューやツール バーなど、サーバーのユーザーインターフェイス コンポーネントが、コンテナーのそれとマージされた状態となります。 これらのユーザーインターフェイス コンポーネントが存在するかどうかが、activeUIState と activeState の違いです。 それ以外の点では、activeState と activeUIState は似ています。 サーバーが "元に戻す" をサポートしている場合、OLE 項目が loadedState または openState に達するまで、その "元に戻す" 状態情報をサーバーで保持する必要があります。
関連項目
Containers
ライセンス認証
コンテナー: クライアント アイテムへの通知
トラッカー
CRectTracker クラス