Annotation of mstools/ole20/samples/spoly2/cfpoly.cpp, revision 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.