CUtlProps::OnPropertyChanged

更新 : 2007 年 11 月

プロパティの設定後に呼び出され、チェインされたプロパティを処理します。

virtual HRESULT OnPropertyChanged(
   ULONG /* iCurSet */,
   DBPROP* pDBProp 
);

パラメータ

  • iCurSet
    プロパティ セット配列のインデックス。プロパティ セットが 1 つだけの場合は 0 にします。

  • pDBProp
    プロパティ ID と新しい値を格納した DBPROP 構造体。

戻り値

標準の HRESULT を返します。既定の戻り値は S_OK です。

解説

チェインされたプロパティ、つまりブックマークや更新など、別のプロパティ値に依存するプロパティ値を処理する場合には、この関数をオーバーライドする必要があります。

使用例

この関数では、パラメータ DBPROP* で指定した構造体からプロパティ ID を取得します。次に、この ID に対応するチェイン先プロパティがあるかどうか調べます。ある場合は、そのプロパティにチェインするプロパティを指定して SetProperties を呼び出します。この例では、DBPROP_IRowsetLocate、DBPROP_LITERALBOOKMARKS、または DBPROP_ORDEREDBOOKMARKS のいずれかのプロパティが取得できた場合に、DBPROP_BOOKMARKS プロパティを設定しています。

HRESULT OnPropertyChanged(ULONG /*iCurSet*/, DBPROP* pDBProp)
{
   ATLASSERT(pDBProp != NULL);

   DWORD dwPropertyID = pDBProp->dwPropertyID;

   if (dwPropertyID == DBPROP_IRowsetLocate || 
      dwPropertyID == DBPROP_LITERALBOOKMARKS ||
      dwPropertyID == DBPROP_ORDEREDBOOKMARKS)
   {
      CComVariant var = pDBProp->vValue;

      if (var.boolVal == VARIANT_TRUE)
      {
         // Set the bookmarks property as these are chained
         CComVariant bookVar(true);
         CDBPropSet set(DBPROPSET_ROWSET);
         set.AddProperty(DBPROP_BOOKMARKS, bookVar);

         return SetProperties(1, &set);
      }
   }

   return S_OK;
}

必要条件

ヘッダー : atldb.h

参照

参照

CUtlProps クラス

その他の技術情報

CUtlProps のメンバ