// virtual HRESULT CXMLKeyFrameValuesDlg::SetPathNodeValue(BSTR path, BSTR value) { //CComPtr<IESelectedAnimationElement> selectedElement; long ncount; m_viewGroup->GetSelectedCount(&ncount); for (int i = 0; i < ncount; i++) { CComPtr<IESelectedElement> selectedElement; m_viewGroup->GetSelectedElementN(i, &selectedElement); CComPtr<IEElement> eElement; selectedElement->get_eElement(&eElement); CComPtr<ILDOMElement> domElement; eElement->get_domElement(&domElement); // ::SetPathNodeValue(domElement, path, value); CComQIPtr<IESelectedAnimationElement> selectedAnimationElement = selectedElement; //if (wcscmp(attributeName, if (selectedAnimationElement)//TRUE) // TODO { //CComQIPtr<ILSMILAnimationTarget> animationTarget = animationTarget; CComQIPtr<ILAnimateXXX> animateXXX = domElement; long ncount; selectedAnimationElement->GetSelectedKeyTimesCount(&ncount); for (int i = 0; i < ncount; i++) { long keyFrame; selectedAnimationElement->GetKeyTimeSelected(i, &keyFrame); CComPtr<ILSMILAttributeValue> attributeValue; animateXXX->GetValue(keyFrame, &attributeValue); attributeValue->setStringValue(value); } } } return S_OK; }
HRESULT CXMLKeyFrameValuesDlg::GetPathNodeValue(BSTR path, BSTR* pVal) { #if 0 CComPtr<IESelectedAnimationElement> selectedElement; long ncount; selectedElement->GetSelectedKeyTimesCount(&ncount); CComBSTR value; for (int i = 0; i < ncount; i++) { long keyFrame; selectedElement->GetKeyTimeSelected(i, &keyFrame); ILSMILAnimationTarget* animationTarget; CComPtr<ILAnimateXXXElement> animateXXX; //CComPtr<ILSMILXMLAttr> attr; //animationTarget->animatableXMLAttrItemByName(L"", &attribute); CComPtr<ILSMILAttributeValue> attributeValue; animateXXX->GetValue(keyFrame, &attributeValue); CComBSTR value2; attributeValue->getStringValue(&value2); if (i == 0) { value = value2; } else if (wcscmp(value, value2)) { value.Empty(); break; } } #endif long ncount; m_viewGroup->GetSelectedCount(&ncount); for (int i = 0; i < ncount; i++) { CComPtr<IESelectedElement> selectedElement; m_viewGroup->GetSelectedElementN(i, &selectedElement); CComPtr<IEElement> eElement; selectedElement->get_eElement(&eElement); CComPtr<ILDOMElement> domElement; eElement->get_domElement(&domElement); CComBSTR attributeName; domElement->getAttribute(L"attributeName", &attributeName); CComQIPtr<IESelectedAnimationElement> selectedAnimationElement = selectedElement; //if (wcscmp(attributeName, if (selectedAnimationElement)//TRUE) // TODO { //CComQIPtr<ILSMILAnimationTarget> animationTarget = animationTarget; CComQIPtr<ILAnimateXXX> animateXXX = domElement; long ncount; selectedAnimationElement->GetSelectedKeyTimesCount(&ncount); CComBSTR value; for (int i = 0; i < ncount; i++) { long keyFrame; selectedAnimationElement->GetKeyTimeSelected(i, &keyFrame); //CComPtr<ILSMILXMLAttr> attr; //animationTarget->animatableXMLAttrItemByName(L"", &attribute); CComPtr<ILSMILAttributeValue> attributeValue; animateXXX->GetValue(keyFrame, &attributeValue); CComBSTR value2; if (attributeValue) attributeValue->getStringValue(&value2); if (i == 0) { value = value2; } else if (cmpbstr(value, value2)) { value.Empty(); break; } } *pVal = value.Detach(); return S_OK; } /* CComBSTR value2; ::GetPathNodeValue(domElement, path, &value2); if (i == 0) { value = value2; } else if (wcscmp(value, value2)) { value.Empty(); break; } */ } return S_OK; }