我目前正在使用win32和一些MSXML开发一个纯C应用程序来处理设置文件。我的文件结构类似于:
<doc>
<Element1>
<A></A>
<C></C>
</Element1>
...
</doc>我需要在A和C之间插入一个元素<B></B>。我找到了派生自C++方法HRESULT insertBefore( IXMLDOMNode* pNewChild, VARIANT varRefChild, IXMLDOMNode** ppOutNewChild );的包装器IXMLDOMNode_insertBefore。varRefChild应该引用C节点,但是我找不到在VARIANT结构中存储它的地址的方法。
发布于 2020-09-02 12:24:01
作为文档IXMLDOMNode::insertBefore下的Example,它使用CComVariant varRef并将其设置为IXMLDOMNode
varRef = pXMLNodeRef;
hr = pXMLElement->insertBefore(pXMLNodeNew, varRef, &pXMLNodeCur);您也可以像C:中的CComVariant operator=类一样执行此操作:
CComVariant& operator=(_Inout_opt_ IUnknown* pSrc) ATLVARIANT_THROW()
{
if (vt != VT_UNKNOWN || pSrc != punkVal)
{
ClearThrow(); //VariantClear()
vt = VT_UNKNOWN;
punkVal = pSrc;
// Need to AddRef as VariantClear will Release
if (punkVal != NULL)
punkVal->AddRef();
}
return *this;
}https://stackoverflow.com/questions/63686547
复制相似问题