SINK.CPP
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:
Windows编程
开发平台:
Visual C++
- /*
- * SINK.CPP
- *
- * Implementation of a sink with the IDuckEvents interface.
- *
- * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
- *
- * Kraig Brockschmidt, Microsoft
- * Internet : kraigb@microsoft.com
- * Compuserve: >INTERNET:kraigb@microsoft.com
- */
- #include "connect.h"
- /*
- * CDuckEvents::CDuckEvents
- * CDuckEvents::~CDuckEvents
- *
- * Parameters (Constructor):
- * pApp PAPP to the app object.
- * uID UINT identifier for this sink.
- */
- CDuckEvents::CDuckEvents(PAPP pApp, UINT uID)
- {
- m_cRef=0;
- m_pApp=pApp; //No AddRef needed, we're nested
- m_uID=uID;
- m_dwCookie=0;
- return;
- }
- CDuckEvents::~CDuckEvents(void)
- {
- return;
- }
- /*
- * CDuckEvents::QueryInterface
- * CDuckEvents::AddRef
- * CDuckEvents::Release
- *
- * Purpose:
- * Non-delegating IUnknown members for CDuckEvents.
- */
- STDMETHODIMP CDuckEvents::QueryInterface(REFIID riid
- , LPVOID *ppv)
- {
- *ppv=NULL;
- if (IID_IUnknown==riid || IID_IDuckEvents==riid)
- *ppv=this;
- if (NULL!=*ppv)
- {
- ((LPUNKNOWN)*ppv)->AddRef();
- return NOERROR;
- }
- return ResultFromScode(E_NOINTERFACE);
- }
- STDMETHODIMP_(ULONG) CDuckEvents::AddRef(void)
- {
- return ++m_cRef;
- }
- STDMETHODIMP_(ULONG) CDuckEvents::Release(void)
- {
- if (0!=--m_cRef)
- return m_cRef;
- delete this;
- return 0;
- }
- /*
- * CDuckEvents::Quack
- *
- * Purpose:
- * Event handler for Quacks
- */
- STDMETHODIMP CDuckEvents::Quack(void)
- {
- TCHAR szTemp[100];
- wsprintf(szTemp, TEXT("Sink #%u received Quack"), m_uID+1);
- m_pApp->Message(szTemp);
- #ifdef WIN32
- PlaySound(TEXT("quack.wav"), NULL, SND_SYNC);
- #endif
- return NOERROR;
- }
- /*
- * CDuckEvents::Flap
- *
- * Purpose:
- * Event handler for Flapping
- */
- STDMETHODIMP CDuckEvents::Flap(void)
- {
- TCHAR szTemp[100];
- wsprintf(szTemp, TEXT("Sink #%u received Flap"), m_uID+1);
- m_pApp->Message(szTemp);
- #ifdef WIN32
- PlaySound(TEXT("flap.wav"), NULL, SND_SYNC);
- #endif
- return NOERROR;
- }
- /*
- * CDuckEvents::Paddle
- *
- * Purpose:
- * Event handler for Paddling
- */
- STDMETHODIMP CDuckEvents::Paddle(void)
- {
- TCHAR szTemp[100];
- wsprintf(szTemp, TEXT("Sink #%u received Paddle"), m_uID+1);
- m_pApp->Message(szTemp);
- #ifdef WIN32
- PlaySound(TEXT("paddle.wav"), NULL, SND_SYNC);
- #endif
- return NOERROR;
- }