#pragma once // // Per BryanT, either do not use #import, or checkin what it produces. // //#pragma warning(disable:4192) // automatically excluding 'IErrorInfo' while importing type library 'msxml3.dll' //#import "msxml3.dll" #include "fusion_msxml3.tlh" namespace F { void ThrowHresult(HRESULT hr); class CXmlAttributes // // This class combines the interface pointers to one object. // { public: ~CXmlAttributes() { Release(); } CXmlAttributes() { HRESULT hr = 0; if (FAILED(hr = this->IMXAttributes.CreateInstance(const_cast(L"Msxml2.SAXAttributes.3.0")))) ThrowHresult(hr); this->ISAXAttributes = this->IMXAttributes; } void Release() { if (this->IMXAttributes != NULL) { this->IMXAttributes.Release(); } if (this->ISAXAttributes != NULL) { this->ISAXAttributes.Release(); } } operator MSXML2::ISAXAttributes * () { return this->ISAXAttributes; } HRESULT clear() { return this->IMXAttributes->clear(); } HRESULT addAttribute( _bstr_t strURI, _bstr_t strLocalName, _bstr_t strQName, _bstr_t strType, _bstr_t strValue) { return this->IMXAttributes->addAttribute( strURI, strLocalName, strQName, strType, strValue); } MSXML2::IMXAttributesPtr IMXAttributes; MSXML2::ISAXAttributesPtr ISAXAttributes; }; }