BROWSECF.CPP (BROWSEH OLE Sample)

/*************************************************************************

  • OLE Automation TypeLibrary Browse Helper Sample

  • BrowseHelpercf.cpp

  • CBrowseHelperCF (class factory) implementation

  • Written by Microsoft Product Support Services, Windows Developer Support

  • (c) Copyright Microsoft Corp. 1994 All Rights Reserved

  • ***********************************************************************/

#include <windows.h>

#include <windowsx.h>

#ifdef WIN16

#include <ole2.h>

#include <compobj.h>

#include <dispatch.h>

#include <variant.h>

#include <olenls.h>

#endif

#include "browseh.h"

CBrowseHelperCF::CBrowseHelperCF(void)

{

m_cRef = 0;

}

/*

* CBrowseHelperCF::QueryInterface, AddRef, Release

*

* Purpose:

* Implements IUnknown::QueryInterface, AddRef, Release

*

*/

STDMETHODIMP

CBrowseHelperCF::QueryInterface(REFIID iid, void FAR* FAR* ppv)

{

*ppv = NULL;

if (iid == IID_IUnknown || iid == IID_IClassFactory)

*ppv = this;

else

return ResultFromScode(E_NOINTERFACE);

AddRef();

return NOERROR;

}

STDMETHODIMP_(ULONG)

CBrowseHelperCF::AddRef(void)

{

return ++m_cRef;

}

STDMETHODIMP_(ULONG)

CBrowseHelperCF::Release(void)

{

if(--m_cRef == 0)

{

delete this;

return 0;

}

return m_cRef;

}

/*

* CBrowseHelperCF::CreateInstance, LockServer

*

* Purpose:

* Implements IClassFactory::CreateInstance, LockServer

*

*/

STDMETHODIMP

CBrowseHelperCF::CreateInstance(IUnknown FAR* punkOuter,

REFIID riid,

void FAR* FAR* ppv)

{

CBrowseHelper FAR* pBrowseHelper;

HRESULT hr;

*ppv = NULL;

// This implementation does not allow aggregation

if (punkOuter)

return ResultFromScode(CLASS_E_NOAGGREGATION);

// Create an instance of the BrowseHelper automation object.

hr = CBrowseHelper::Create(&pBrowseHelper);

if (FAILED(hr))

return hr;

hr = pBrowseHelper->QueryInterface(riid, ppv);

if (FAILED(hr))

{

delete pBrowseHelper;

return hr;

}

return NOERROR;

}

STDMETHODIMP

CBrowseHelperCF::LockServer(BOOL fLock)

{

extern ULONG g_cLock;

if (fLock)

g_cLock++;

else

g_cLock--;

return NOERROR;

}

Software for developers
Delphi Components
.Net Components
Software for Android Developers
More information resources
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
Databases for Amazon shops developers
Amazon Categories Database
Browse Nodes Database