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: 庆彬 苏