home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / com / inole2 / interfac / iperstmi.cpp < prev    next >
C/C++ Source or Header  |  1996-05-21  |  5KB  |  214 lines

  1. /*
  2.  * IPERSTMI.CPP
  3.  *
  4.  * Template IPersistStreamInitInit interface implementation.
  5.  *
  6.  * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
  7.  *
  8.  * Kraig Brockschmidt, Microsoft
  9.  * Internet  :  kraigb@microsoft.com
  10.  * Compuserve:  >INTERNET:kraigb@microsoft.com
  11.  */
  12.  
  13.  
  14. #include "iperstmi.h"
  15.  
  16.  
  17. /*
  18.  * CImpIPersistStreamInit:CImpIPersistStreamInit
  19.  * CImpIPersistStreamInit::~CImpIPersistStreamInit
  20.  *
  21.  * Constructor Parameters:
  22.  *  pObj            LPVOID pointing to the object we live in.
  23.  *  pUnkOuter       LPUNKNOWN of the controlling unknown.
  24.  */
  25.  
  26. CImpIPersistStreamInit::CImpIPersistStreamInit(LPVOID pObj
  27.     , LPUNKNOWN pUnkOuter)
  28.     {
  29.     m_cRef=0;
  30.     m_pObj=pObj;
  31.     m_pUnkOuter=pUnkOuter;
  32.     return;
  33.     }
  34.  
  35. CImpIPersistStreamInit::~CImpIPersistStreamInit(void)
  36.     {
  37.     return;
  38.     }
  39.  
  40.  
  41.  
  42. /*
  43.  * CImpIPersistStreamInit::QueryInterface
  44.  * CImpIPersistStreamInit::AddRef
  45.  * CImpIPersistStreamInit::Release
  46.  *
  47.  * Purpose:
  48.  *  Delegating IUnknown members for CImpIPersistStreamInit.
  49.  */
  50.  
  51. STDMETHODIMP CImpIPersistStreamInit::QueryInterface(REFIID riid
  52.     , LPVOID *ppv)
  53.     {
  54.     return m_pUnkOuter->QueryInterface(riid, ppv);
  55.     }
  56.  
  57. STDMETHODIMP_(ULONG) CImpIPersistStreamInit::AddRef(void)
  58.     {
  59.     ++m_cRef;
  60.     return m_pUnkOuter->AddRef();
  61.     }
  62.  
  63. STDMETHODIMP_(ULONG) CImpIPersistStreamInit::Release(void)
  64.     {
  65.     --m_cRef;
  66.     return m_pUnkOuter->Release();
  67.     }
  68.  
  69.  
  70.  
  71.  
  72.  
  73. /*
  74.  * CImpIPersistStreamInit::GetClassID
  75.  *
  76.  * Purpose:
  77.  *  Returns the CLSID of the object represented by this interface.
  78.  *
  79.  * Parameters:
  80.  *  pClsID          LPCLSID in which to store our CLSID.
  81.  */
  82.  
  83. STDMETHODIMP CImpIPersistStreamInit::GetClassID(LPCLSID pClsID)
  84.     {
  85.     return NOERROR;
  86.     }
  87.  
  88.  
  89.  
  90.  
  91.  
  92. /*
  93.  * CImpIPersistStreamInit::IsDirty
  94.  *
  95.  * Purpose:
  96.  *  Tells the caller if we have made changes to this object since
  97.  *  it was loaded or initialized new.
  98.  *
  99.  * Parameters:
  100.  *  None
  101.  *
  102.  * Return Value:
  103.  *  HRESULT         Contains S_OK if we ARE dirty, S_FALSE if
  104.  *                  NOT dirty.
  105.  */
  106.  
  107. STDMETHODIMP CImpIPersistStreamInit::IsDirty(void)
  108.     {
  109.     return ResultFromScode(S_FALSE);
  110.     }
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118. /*
  119.  * CImpIPersistStreamInit::Load
  120.  *
  121.  * Purpose:
  122.  *  Instructs the object to load itself from a previously saved
  123.  *  IStreamInit that was handled by Save in another object lifetime.
  124.  *  The seek pointer in this stream will be exactly the same as
  125.  *  it was when Save was called, and this function must leave
  126.  *  the seek pointer the same as it was on exit from Save, regardless
  127.  *  of success or failure.  This function should not hold on to
  128.  *  pIStream.
  129.  *
  130.  *  This function is called in lieu of IPersistStreamInit::InitNew
  131.  *  when the object already has a persistent state.
  132.  *
  133.  * Parameters:
  134.  *  pIStream        LPSTREAM from which to load.
  135.  */
  136.  
  137. STDMETHODIMP CImpIPersistStreamInit::Load(LPSTREAM pIStream)
  138.     {
  139.     return NOERROR;
  140.     }
  141.  
  142.  
  143.  
  144.  
  145.  
  146. /*
  147.  * CImpIPersistStreamInit::Save
  148.  *
  149.  * Purpose:
  150.  *  Saves the data for this object to an IStreamInit.  Be sure not
  151.  *  to change the position of the seek pointer on entry to this
  152.  *  function: the caller will assume that you write from the
  153.  *  current offset.  Leave the stream's seek pointer at the end
  154.  *  of the data written on exit.
  155.  *
  156.  * Parameters:
  157.  *  pIStream        LPSTREAM in which to save our data.
  158.  *  fClearDirty     BOOL indicating if this call should clear
  159.  *                  the object's dirty flag (TRUE) or leave it
  160.  *                  unchanged (FALSE).
  161.  */
  162.  
  163. STDMETHODIMP CImpIPersistStreamInit::Save(LPSTREAM pIStream
  164.     , BOOL fClearDirty)
  165.     {
  166.     return NOERROR;
  167.     }
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176. /*
  177.  * CImpIPersistStreamInit::GetSizeMax
  178.  *
  179.  * Purpose:
  180.  *  Returns the size of the data we would write if Save was
  181.  *  called right now.
  182.  *
  183.  * Parameters:
  184.  *  pcbSize         ULARGE_INTEGER * in which to save the size
  185.  *                  of the stream an immediate call to Save would
  186.  *                  write.
  187.  */
  188.  
  189. STDMETHODIMP CImpIPersistStreamInit::GetSizeMax(ULARGE_INTEGER
  190.     *pcbSize)
  191.     {
  192.     return NOERROR;
  193.     }
  194.  
  195.  
  196.  
  197.  
  198. /*
  199.  * CImpIPersistStreamInit::InitNew
  200.  *
  201.  * Purpose:
  202.  *  Informs the object that it is being created new instead of
  203.  *  loaded from a persistent state.  This will be called in lieu
  204.  *  of IPersistStreamInit::Load.
  205.  *
  206.  * Parameters:
  207.  *  None
  208.  */
  209.  
  210. STDMETHODIMP CImpIPersistStreamInit::InitNew(void)
  211.     {
  212.     return NOERROR;
  213.     }
  214.