/*--------------------------------------------------------------------------* * * Microsoft Windows * Copyright (C) Microsoft Corporation, 1992 - 00 * * File: node.inl * * Contents: Inline functions for node.h * * History: 9-Mar-2000 jeffro Created * *--------------------------------------------------------------------------*/ #pragma once //_____________________________________________________________________________ // // Inlines for class: CComponent //_____________________________________________________________________________ // inline CComponent::CComponent(CSnapIn * pSnapIn) { Construct(pSnapIn, NULL); } inline HRESULT CComponent::Initialize(LPCONSOLE lpConsole) { ASSERT(m_spIComponent != NULL); if (m_spIComponent == NULL) return E_FAIL; return m_spIComponent->Initialize(lpConsole); } inline HRESULT CComponent::Destroy(MMC_COOKIE cookie) { ASSERT(m_spIComponent != NULL); if (m_spIComponent == NULL) return E_FAIL; return m_spIComponent->Destroy(cookie); } inline HRESULT CComponent::QueryDataObject(MMC_COOKIE cookie, DATA_OBJECT_TYPES type, LPDATAOBJECT* ppDataObject) { ASSERT(m_spIComponent != NULL); if (m_spIComponent == NULL) return E_FAIL; ASSERT(type == CCT_RESULT || type == CCT_UNINITIALIZED); return m_spIComponent->QueryDataObject(cookie, type, ppDataObject); } inline HRESULT CComponent::GetResultViewType(MMC_COOKIE cookie, LPOLESTR* ppszViewType, long* pViewOptions) { ASSERT(m_spIComponent != NULL); if (m_spIComponent == NULL) return E_FAIL; return m_spIComponent->GetResultViewType(cookie, ppszViewType, pViewOptions); } inline HRESULT CComponent::GetDisplayInfo(RESULTDATAITEM* pResultDataItem) { ASSERT(m_spIComponent != NULL); if (m_spIComponent == NULL) return E_FAIL; return m_spIComponent->GetDisplayInfo(pResultDataItem); } //_____________________________________________________________________________ // // Inlines for class: COCX //_____________________________________________________________________________ // inline COCX::COCX(void) : m_clsid(CLSID_NULL) { DEBUG_INCREMENT_INSTANCE_COUNTER(COCX); } inline COCX::~COCX(void) { DEBUG_DECREMENT_INSTANCE_COUNTER(COCX); } inline void COCX::SetControl(CLSID& clsid, IUnknown* pUnknown) { m_clsid = clsid; m_spOCXWrapperUnknown = pUnknown; } inline void COCX::SetControl(LPUNKNOWN pUnkOCX, LPUNKNOWN pUnkOCXWrapper) { m_spOCXUnknown = pUnkOCX; m_spOCXWrapperUnknown = pUnkOCXWrapper; } //____________________________________________________________________________ // // Inlines for class: CNode //____________________________________________________________________________ // /*+-------------------------------------------------------------------------* * CNode::ToHandle * CNode::FromHandle * * Converts between HNODE's and CNode*'s. Currently this is a direct mapping * via casting, but enventually there will be an indirect mapping that will * allow detection of stale HNODEs. *--------------------------------------------------------------------------*/ inline CNode* CNode::FromHandle (HNODE hNode) { return (reinterpret_cast(hNode)); } inline HNODE CNode::ToHandle (const CNode* pNode) { return (reinterpret_cast(const_cast(pNode))); } inline void CNode::ResetFlags(void) { //m_dwFlags &= ~flag_expanded_at_least_once; m_dwFlags = 0; } inline void CNode::SetExpandedAtLeastOnce(void) { m_dwFlags |= flag_expanded_at_least_once; } inline BOOL CNode::WasExpandedAtLeastOnce(void) { return (m_dwFlags & flag_expanded_at_least_once) ? TRUE : FALSE; } inline void CNode::SetExpandedVisually(bool bExpanded) { if (bExpanded) m_dwFlags |= flag_expanded_visually; else m_dwFlags &= ~flag_expanded_visually; } inline bool CNode::WasExpandedVisually(void) { return (m_dwFlags & flag_expanded_visually) ? true : false; } inline const CLSID& CNode::GetPrimarySnapInCLSID(void) { CSnapIn* const pSnapIn = GetPrimarySnapIn(); if (pSnapIn == NULL) return (GUID_NULL); return pSnapIn->GetSnapInCLSID(); } inline CComponent* CNode::GetPrimaryComponent(void) { ASSERT ((m_pPrimaryComponent != NULL) && m_pPrimaryComponent->IsInitialized()); return m_pPrimaryComponent; } inline LPARAM CNode::GetUserParam(void) { DECLARE_SC (sc, _T("CNode::GetUserParam")); CMTNode* pMTNode = GetMTNode(); sc = ScCheckPointers (pMTNode, E_UNEXPECTED); if (sc) return (0); return (pMTNode->GetUserParam()); } inline HRESULT CNode::GetNodeType(GUID* pGuid) { DECLARE_SC (sc, _T("CNode::GetNodeType")); sc = ScCheckPointers (pGuid); if (sc) return (sc.ToHr()); CMTNode* pMTNode = GetMTNode(); sc = ScCheckPointers (pMTNode, E_UNEXPECTED); if (sc) return (sc.ToHr()); return pMTNode->GetNodeType(pGuid); } inline HRESULT CNode::QueryDataObject(DATA_OBJECT_TYPES type, LPDATAOBJECT* ppdtobj) { DECLARE_SC (sc, _T("CNode::QueryDataObject")); sc = ScCheckPointers (ppdtobj); if (sc) return (sc.ToHr()); CMTNode* pMTNode = GetMTNode(); sc = ScCheckPointers (pMTNode, E_UNEXPECTED); if (sc) return (sc.ToHr()); return pMTNode->QueryDataObject(type, ppdtobj); } /*--------------------------------------------------------------------------* * CNode::ExtractColumnConfigID * * *--------------------------------------------------------------------------*/ inline HRESULT CNode::ExtractColumnConfigID(IDataObject* pDataObj, HGLOBAL& hGlobal) { ASSERT(pDataObj != NULL); // Get the data return (DataObject_GetHGLOBALData (pDataObj, GetColumnConfigIDCF(),&hGlobal)); } /*--------------------------------------------------------------------------* * CNode::GetColumnConfigIDCF * * *--------------------------------------------------------------------------*/ inline CLIPFORMAT CNode::GetColumnConfigIDCF() { static CLIPFORMAT cfColumnConfigID = 0; if (cfColumnConfigID == 0) { USES_CONVERSION; cfColumnConfigID = (CLIPFORMAT) RegisterClipboardFormat (W2T (CCF_COLUMN_SET_ID)); ASSERT (cfColumnConfigID != 0); } return (cfColumnConfigID); } inline CSnapInNode* CNode::GetStaticParent(void) { CMTSnapInNode* pMTSINode = GetMTNode()->GetStaticParent(); CNodeList& nodeList = pMTSINode->GetNodeList(); POSITION pos = nodeList.GetHeadPosition(); CNode* pNode = NULL; while (pos) { pNode = nodeList.GetNext(pos); if (pNode->GetViewID() == GetViewID()) break; } ASSERT(pNode != NULL); return dynamic_cast(pNode); } inline CComponent* CNode::GetComponent(COMPONENTID nID) { CMTSnapInNode* pMTSnapInNode = GetMTNode()->GetStaticParent(); CComponent* pCC = pMTSnapInNode->GetComponent(GetViewID(), nID, GetPrimarySnapIn()); ASSERT(pCC != NULL); return pCC; } inline LPUNKNOWN CNode::GetControl(CLSID& clsid) { DECLARE_SC(sc, TEXT("CNode::GetControl")); CSnapInNode* pSINode = GetStaticParent(); sc = ScCheckPointers(pSINode, E_UNEXPECTED); if (sc) return NULL; return pSINode->GetControl(clsid); } inline void CNode::SetControl(CLSID& clsid, IUnknown* pUnknown) { DECLARE_SC(sc, TEXT("CNode::SetControl")); CSnapInNode* pSINode = GetStaticParent(); sc = ScCheckPointers(pSINode, E_UNEXPECTED); if (sc) return; pSINode->SetControl(clsid, pUnknown); } inline LPUNKNOWN CNode::GetControl(LPUNKNOWN pUnkOCX) { DECLARE_SC(sc, TEXT("CNode::GetControl")); CSnapInNode* pSINode = GetStaticParent(); sc = ScCheckPointers(pSINode, E_UNEXPECTED); if (sc) return NULL; return pSINode->GetControl(pUnkOCX); } inline void CNode::SetControl(LPUNKNOWN pUnkOCX, IUnknown* pUnknown) { DECLARE_SC(sc, TEXT("CNode::SetControl")); CSnapInNode* pSINode = GetStaticParent(); sc = ScCheckPointers(pSINode, E_UNEXPECTED); if (sc) return; pSINode->SetControl(pUnkOCX, pUnknown); } //_____________________________________________________________________________ // // Inlines for class: CSnapInNode //_____________________________________________________________________________ // inline CComponent* CSnapInNode::GetComponent(const CLSID& clsid) { for (int i=0; i < GetComponentArray().size(); i++) { if (GetComponentArray()[i] != NULL && IsEqualCLSID(clsid, GetComponentArray()[i]->GetCLSID()) == TRUE) return GetComponentArray()[i]; } return NULL; } inline CComponent* CSnapInNode::GetComponent(COMPONENTID nID) { if (nID < GetComponentArray().size()) return GetComponentArray()[nID]; return NULL; }