APPCF.CPP (LINES OLE Sample)

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

  • OLE Simple InProc Automation Object.

  • Applicationcf.cpp

  • CApplicationCF (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 "lines.h"

CApplicationCF::CApplicationCF(void)

{

m_cRef = 0;

}

/*

* CApplicationCF::QueryInterface, AddRef, Release

*

* Purpose:

* Implements IUnknown::QueryInterface, AddRef, Release

*

*/

STDMETHODIMP

CApplicationCF::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)

CApplicationCF::AddRef(void)

{

return ++m_cRef;

}

STDMETHODIMP_(ULONG)

CApplicationCF::Release(void)

{

if(--m_cRef == 0)

{

delete this;

return 0;

}

return m_cRef;

}

/*

* CApplicationCF::CreateInstance, LockServer

*

* Purpose:

* Implements IClassFactory::CreateInstance, LockServer

*

*/

STDMETHODIMP

CApplicationCF::CreateInstance(IUnknown FAR* punkOuter,

REFIID riid,

void FAR* FAR* ppv)

{

HRESULT hr;

*ppv = NULL;

// This implementation does'nt allow aggregation

if (punkOuter)

return ResultFromScode(CLASS_E_NOAGGREGATION);

// This is REGCLS_SINGLEUSE class factory, so CreateInstance will be

// called atmost once. An application objects has a REGCLS_SINGLEUSE class

// factory. The global application object has already been created when

// CreateInstance is called. A REGCLS_MULTIPLEUSE class factory's

// CreateInstance would be called multiple times and would create a new

// object each time. An MDI application would have a REGCLS_MULTIPLEUSE

// class factory for it's document objects.

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

if (FAILED(hr))

{

g_pApplication->Quit();

return hr;

}

return NOERROR;

}

STDMETHODIMP

CApplicationCF::LockServer(BOOL fLock)

{

CoLockObjectExternal(g_pApplication, fLock, TRUE);

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