You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
352 lines
9.1 KiB
352 lines
9.1 KiB
/*--------------------------------------------------------------------------*
|
|
*
|
|
* 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<CNode*>(hNode));
|
|
}
|
|
|
|
inline HNODE CNode::ToHandle (const CNode* pNode)
|
|
{
|
|
return (reinterpret_cast<HNODE>(const_cast<CNode*>(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<CSnapInNode*>(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;
|
|
}
|