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