Annotation of mstools/ole20/samples/spoly2/cfpoly.cpp, revision 1.1.1.1

1.1       root        1: /*** 
                      2: *cfpoly.cpp - The CPoly Class Factory.
                      3: *
                      4: *  Copyright (C) 1992, Microsoft Corporation.  All Rights Reserved.
                      5: *  Information Contained Herein Is Proprietary and Confidential.
                      6: *
                      7: *Purpose:
                      8: *  This module implements the CPoly class factory.
                      9: *
                     10: *Implementation Notes:
                     11: *
                     12: *****************************************************************************/
                     13: 
                     14: #include <windows.h>
                     15: #include <ole2.h>
                     16: #include <dispatch.h>
                     17: 
                     18: #include "spoly.h"
                     19: #include "cpoint.h"
                     20: #include "cpoly.h"
                     21: 
                     22: 
                     23: CPolyCF::CPolyCF()
                     24: {
                     25:     m_refs = 0;
                     26: }
                     27: 
                     28: 
                     29: CPolyCF::~CPolyCF()
                     30: {
                     31: }
                     32: 
                     33: 
                     34: IClassFactory FAR*
                     35: CPolyCF::Create()
                     36: {
                     37:     CPolyCF FAR* pCF;
                     38: 
                     39:     if((pCF = new FAR CPolyCF()) == NULL)
                     40:       return NULL;
                     41:     pCF->AddRef();
                     42:     return pCF;
                     43: }
                     44: 
                     45: 
                     46: //---------------------------------------------------------------------
                     47: //                    IUnknown Methods
                     48: //---------------------------------------------------------------------
                     49: 
                     50: 
                     51: STDMETHODIMP
                     52: CPolyCF::QueryInterface(REFIID iid, void FAR* FAR* ppv) 
                     53: {
                     54:     if(iid == IID_IUnknown || iid == IID_IClassFactory){
                     55:       *ppv = this;
                     56:       ++m_refs;
                     57:       return NOERROR;
                     58:     }
                     59:     *ppv = NULL;
                     60:     return ResultFromScode(E_NOINTERFACE);
                     61: }
                     62: 
                     63: 
                     64: STDMETHODIMP_(ULONG)
                     65: CPolyCF::AddRef(void)
                     66: {
                     67:     return ++m_refs;
                     68: }
                     69: 
                     70: 
                     71: STDMETHODIMP_(ULONG)
                     72: CPolyCF::Release(void)
                     73: {
                     74:     if(--m_refs == 0){
                     75:       delete this;
                     76:       return 0;
                     77:     }
                     78:     return m_refs;
                     79: }
                     80: 
                     81: 
                     82: //---------------------------------------------------------------------
                     83: //                   IClassFactory Methods
                     84: //---------------------------------------------------------------------
                     85: 
                     86: 
                     87: STDMETHODIMP
                     88: CPolyCF::CreateInstance(
                     89:     IUnknown FAR* pUnkOuter,
                     90:     REFIID iid,
                     91:     void FAR* FAR* ppv)
                     92: {
                     93:     HRESULT hresult;
                     94:     CPoly FAR *ppoly;
                     95: 
                     96:     if((ppoly = CPoly::Create()) == NULL){
                     97:       *ppv = NULL;
                     98:       return ResultFromScode(E_OUTOFMEMORY);
                     99:     }
                    100:     hresult = ppoly->QueryInterface(iid, ppv);
                    101:     ppoly->Release();
                    102:     return hresult;
                    103: }
                    104: 
                    105: 
                    106: STDMETHODIMP
                    107: CPolyCF::LockServer(BOOL fLock)
                    108: {
                    109:     return NOERROR;
                    110: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.