SINK.CPP
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:

Windows编程

开发平台:

Visual C++

  1. /*
  2.  * SINK.CPP
  3.  *
  4.  * Implementation of a sink with the IDuckEvents interface.
  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. #include "connect.h"
  13. /*
  14.  * CDuckEvents::CDuckEvents
  15.  * CDuckEvents::~CDuckEvents
  16.  *
  17.  * Parameters (Constructor):
  18.  *  pApp            PAPP to the app object.
  19.  *  uID             UINT identifier for this sink.
  20.  */
  21. CDuckEvents::CDuckEvents(PAPP pApp, UINT uID)
  22.     {
  23.     m_cRef=0;
  24.     m_pApp=pApp;    //No AddRef needed, we're nested
  25.     m_uID=uID;
  26.     m_dwCookie=0;
  27.     return;
  28.     }
  29. CDuckEvents::~CDuckEvents(void)
  30.     {
  31.     return;
  32.     }
  33. /*
  34.  * CDuckEvents::QueryInterface
  35.  * CDuckEvents::AddRef
  36.  * CDuckEvents::Release
  37.  *
  38.  * Purpose:
  39.  *  Non-delegating IUnknown members for CDuckEvents.
  40.  */
  41. STDMETHODIMP CDuckEvents::QueryInterface(REFIID riid
  42.     , LPVOID *ppv)
  43.     {
  44.     *ppv=NULL;
  45.     if (IID_IUnknown==riid || IID_IDuckEvents==riid)
  46.         *ppv=this;
  47.     if (NULL!=*ppv)
  48.         {
  49.         ((LPUNKNOWN)*ppv)->AddRef();
  50.         return NOERROR;
  51.         }
  52.     return ResultFromScode(E_NOINTERFACE);
  53.     }
  54. STDMETHODIMP_(ULONG) CDuckEvents::AddRef(void)
  55.     {
  56.     return ++m_cRef;
  57.     }
  58. STDMETHODIMP_(ULONG) CDuckEvents::Release(void)
  59.     {
  60.     if (0!=--m_cRef)
  61.         return m_cRef;
  62.     delete this;
  63.     return 0;
  64.     }
  65. /*
  66.  * CDuckEvents::Quack
  67.  *
  68.  * Purpose:
  69.  *  Event handler for Quacks
  70.  */
  71. STDMETHODIMP CDuckEvents::Quack(void)
  72.     {
  73.     TCHAR       szTemp[100];
  74.     wsprintf(szTemp, TEXT("Sink #%u received Quack"), m_uID+1);
  75.     m_pApp->Message(szTemp);
  76.    #ifdef WIN32
  77.     PlaySound(TEXT("quack.wav"), NULL, SND_SYNC);
  78.    #endif
  79.     return NOERROR;
  80.     }
  81. /*
  82.  * CDuckEvents::Flap
  83.  *
  84.  * Purpose:
  85.  *  Event handler for Flapping
  86.  */
  87. STDMETHODIMP CDuckEvents::Flap(void)
  88.     {
  89.     TCHAR       szTemp[100];
  90.     wsprintf(szTemp, TEXT("Sink #%u received Flap"), m_uID+1);
  91.     m_pApp->Message(szTemp);
  92.    #ifdef WIN32
  93.     PlaySound(TEXT("flap.wav"), NULL, SND_SYNC);
  94.    #endif
  95.     return NOERROR;
  96.     }
  97. /*
  98.  * CDuckEvents::Paddle
  99.  *
  100.  * Purpose:
  101.  *  Event handler for Paddling
  102.  */
  103. STDMETHODIMP CDuckEvents::Paddle(void)
  104.     {
  105.     TCHAR       szTemp[100];
  106.     wsprintf(szTemp, TEXT("Sink #%u received Paddle"), m_uID+1);
  107.     m_pApp->Message(szTemp);
  108.    #ifdef WIN32
  109.     PlaySound(TEXT("paddle.wav"), NULL, SND_SYNC);
  110.    #endif
  111.     return NOERROR;
  112.     }