当 Element 的几何尺寸发生变化时,如何添加的合适的回调函数?

QDChangedCallback s_changedCallback;
void ElementControlCallBack::RegisterAllCallBack()
{
	DependencyManagerLinkage::RegisterRootsChangedCallback(m_nAPPID, &s_changedCallback);
}

class QDChangedCallback : public DependencyManagerLinkage::IRootsChangedCallback
{
	public:
		virtual UInt32  AddRef() const override { return 1; }
		virtual UInt32  Release() const override { return 1; }
		virtual StatusInt OnRootsChanged(ElementHandleCR dependentElement, const DependencyLinkage &dependencyData, UInt8 *pRootStatus, UInt8 selfStatus);
		virtual WString GetDescription() const;
}

StatusInt QDChangedCallback::OnRootsChanged(ElementHandleCR dependentElement, const DependencyLinkage &dependencyData, UInt8 *pRootStatus, UInt8 selfStatus)
{
     // 这里怎么能判断仅是属性发生变化,从而忽略掉
     // 只是当几何尺寸发生变化时,才真正的处理?
}

// 这里怎么能判断仅是属性发生变化,从而忽略掉
// 只是当几何尺寸发生变化时,才真正的处理?

  • 您可以通过ChangeTrackCallback::AddChangedFunction(OnElmChanged);设置元素改变的回调函数,其中ChangeTrackInfo里面的ChangeTrackAction就有相关的条件去判断:

    void OnElmChanged(MSElementDescrP newDescr, MSElementDescrP oldDescr, ChangeTrackInfo* trackInfo, bool*)
    {

    }

    如果在OnRootsChanged里面只能判断DEPENDENCY_STATUS_CHANGED。

    Answer Verified By: 庆彬 苏