Annotation of mstools/ole20/samples/spoly2/cfpoint.cpp, revision 1.1

1.1     ! root        1: /*** 
        !             2: *CFPoint.cpp - The CPoint 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 CPoint 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: 
        !            21: 
        !            22: CPointCF::CPointCF()
        !            23: {
        !            24:     m_refs = 0;
        !            25: }
        !            26: 
        !            27: 
        !            28: CPointCF::~CPointCF()
        !            29: {
        !            30: }
        !            31: 
        !            32: 
        !            33: IClassFactory FAR*
        !            34: CPointCF::Create()
        !            35: {
        !            36:     CPointCF FAR* pCF;
        !            37: 
        !            38:     if((pCF = new FAR CPointCF()) == NULL)
        !            39:       return NULL;
        !            40:     pCF->AddRef();
        !            41:     return pCF;
        !            42: }
        !            43: 
        !            44: 
        !            45: //---------------------------------------------------------------------
        !            46: //                     IUnknown Methods
        !            47: //---------------------------------------------------------------------
        !            48: 
        !            49: 
        !            50: STDMETHODIMP
        !            51: CPointCF::QueryInterface(REFIID riid, void FAR* FAR* ppv) 
        !            52: {
        !            53:     if(riid == IID_IUnknown || riid == IID_IClassFactory){
        !            54:       *ppv = this;
        !            55:       ++m_refs;
        !            56:       return NOERROR;
        !            57:     }
        !            58:     *ppv = NULL;
        !            59:     return ResultFromScode(E_NOINTERFACE);
        !            60: }
        !            61: 
        !            62: STDMETHODIMP_(ULONG)
        !            63: CPointCF::AddRef(void)
        !            64: {
        !            65:     return ++m_refs;
        !            66: }
        !            67: 
        !            68: STDMETHODIMP_(ULONG)
        !            69: CPointCF::Release(void)
        !            70: {
        !            71:     if(--m_refs == 0){
        !            72:       delete this;
        !            73:       return 0;
        !            74:     }
        !            75:     return m_refs;
        !            76: }
        !            77: 
        !            78: 
        !            79: //---------------------------------------------------------------------
        !            80: //                   IClassFactory Methods
        !            81: //---------------------------------------------------------------------
        !            82: 
        !            83: 
        !            84: STDMETHODIMP
        !            85: CPointCF::CreateInstance(
        !            86:     IUnknown FAR* pUnkOuter,
        !            87:     REFIID riid,
        !            88:     void FAR* FAR* ppv)
        !            89: {
        !            90:     HRESULT hresult;
        !            91:     CPoint FAR *ppoint;
        !            92: 
        !            93:     if((ppoint = CPoint::Create()) == NULL){
        !            94:       *ppv = NULL;
        !            95:       return ResultFromScode(E_OUTOFMEMORY);
        !            96:     }
        !            97:     hresult = ppoint->QueryInterface(riid, ppv);
        !            98:     ppoint->Release();
        !            99:     return hresult;
        !           100: }
        !           101: 
        !           102: 
        !           103: STDMETHODIMP
        !           104: CPointCF::LockServer(BOOL fLock)
        !           105: {
        !           106:     return NOERROR;
        !           107: }

unix.superglobalmegacorp.com

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