STDMETHODIMP CTangramNode::put_Attribute(BSTR bstrKey, BSTR bstrVal) { IXMLDOMElement* ele = NULL; m_ObjItem.elem.QueryInterface<IXMLDOMElement>(&ele); if (ele != NULL) { ele->setAttribute(bstrKey,CComVariant(bstrVal)); ele->Release(); } return S_OK; }
HRESULT CPageEvents::UpdateNodeFromItem(LPARAM lNode) { // Typecast the tree item's param as an XML element pointer IXMLDOMElement* pElement = reinterpret_cast<IXMLDOMElement*>(lNode); if (!pElement) return S_FALSE; // Determine if the node is a group element or an event CComBSTR bstrTagName; VERIFY(SUCCEEDED(pElement->get_tagName(&bstrTagName))); bool bIsEvent = 0 == wcscmp(bstrTagName, m_bstrEvent); bool bIsGroup = !bIsEvent && 0 == wcscmp(bstrTagName, m_bstrEventGroup); ASSERT(bIsEvent || bIsGroup); if (bIsEvent) { // Set the LogAsNTEvent attribute if (GetDlgItem(IDC_LOG2NT)->IsWindowEnabled()) { CComVariant varLog2NT(!!IsDlgButtonChecked(IDC_LOG2NT)); pElement->setAttribute(m_bstrLogAsNTEvent, varLog2NT); } // Set the LogAsDBEvent attribute if (GetDlgItem(IDC_LOG2DB)->IsWindowEnabled()) { CComVariant varLog2DB(!!IsDlgButtonChecked(IDC_LOG2DB)); pElement->setAttribute(m_bstrLogAsDBEvent, varLog2DB); } } else { // TODO: Work-out how to best support indeterminate checkbox state } // Indicate success return S_OK; }
STDMETHODIMP CTangramNode::put_Caption(BSTR bstrCaption) { CString str(bstrCaption); m_strCaption = str; if (m_pParentObj != NULL && m_pParentObj->m_pHostWnd != NULL) { m_pParentObj->m_pHostWnd->SendMessage(WM_TGM_SET_CAPTION,m_nCol,(LPARAM)str.GetBuffer()); } IXMLDOMElement* ele = NULL; m_ObjItem.elem.QueryInterface<IXMLDOMElement>(&ele); if (ele != NULL) { ele->setAttribute(L"caption",CComVariant(str)); ele->Release(); } return S_OK; }