Index   Commented   Search   About

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;

}

Related Links

Software for Delphi and C++ Builder developers
Software for Visual Studio .NET developers
Software for Visual Basic 6 developers
Delphi Tips&Tricks
MegaDetailed.NET

More Online Helps

Win32 Programmer's Reference (win32.hlp)
Win32 Multimedia Programmer's Reference (mmedia.hlp)
Microsoft Windows Pen API Programmer's Reference (penapi.hlp)
Microsoft Windows Sockets 2 Reference (sock2.hlp)
Microsoft Windows Telephony API (TAPI) Programmer's Reference (sock2.hlp)
Unix Manual Pages

Free Tech Secrets ;) Copyright © 2008 Free Tect Secrets ;) greatis just4fun network just4fun