⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 robot2.cpp

📁 VC++串口通信设。本书详细说明讲解了在VC++环境下编写串口通信得过程。值得一看
💻 CPP
字号:
#define INITGUID
#include "Robot2.h"
#include "Utility.h"
#include "resource.h"
#include <mmsystem.h>


// Sound identifiers
int g_aiSoundIds[] =
   {
      WAV_BLADDLE,
      WAV_COW,
      WAV_GAMESHOW,
      WAV_GARGLE,
      WAV_LAUGH,
      WAV_OHNO,
      WAV_OOOO,
      WAV_OUCH,
      WAV_TAXI
   };

// Constant that tracks the number of longer sounds
static const ULONG g_ulNumOtherSounds = 
   sizeof(g_aiSoundIds) / sizeof(int);


IMPLEMENT_DYNCREATE(ComNoisyRobot, CCmdTarget)

IMPLEMENT_OLECREATE(ComNoisyRobot, "NoisyRobot",
0xf8d4bfd6, 0x4277, 0x11d0, 0x8b, 0xe2, 0xad, 0x32, 0xe5, 0x41, 0xaf, 0xc);

BEGIN_INTERFACE_MAP(ComNoisyRobot, CCmdTarget)
   INTERFACE_PART(ComNoisyRobot, IID_INoise, NoiseInner)
   INTERFACE_AGGREGATE(ComNoisyRobot, m_pAggrIUnknown)
END_INTERFACE_MAP()


//
// Constructor and destructor
//

ComNoisyRobot::ComNoisyRobot()
          : m_pAggrIUnknown(NULL)
{
   VerboseMsg("In ComNoisyRobot constructor.\n");

   // Seed the random number generator
   SeedRandomGenerator();

   // Allow other components to aggregate us if they need to
   EnableAggregation();

   AfxOleLockApp();
}

ComNoisyRobot::~ComNoisyRobot()
{
   VerboseMsg("In ComNoisyRobot destructor.\n");

   // Release our aggregate
   if (m_pAggrIUnknown) {
      m_pAggrIUnknown->Release();
      m_pAggrIUnknown = NULL;
   }

   AfxOleUnlockApp();
}


//
// Virtual functions overriden from CCmdTarget
//

BOOL ComNoisyRobot::OnCreateAggregates()
{
   HRESULT    hResult;

   // Create a new Robot object to aggregate with
   VerboseMsg("Creating new Robot aggregate.\n");
   hResult = CoCreateInstance(CLSID_Robot,
                              GetControllingUnknown(),
                              CLSCTX_INPROC_SERVER,
                              IID_IUnknown,
                              (PPVOID) &m_pAggrIUnknown);
   if (FAILED(hResult)) {
      ReportError("Could not create a new Robot aggregate.", hResult);
      return FALSE;
   }

   return TRUE;
}


//
// Nested Robot IUnknown members
//

STDMETHODIMP_(ULONG) 
ComNoisyRobot::XNoiseInner::AddRef()
{
   METHOD_PROLOGUE(ComNoisyRobot, NoiseInner)
   return pThis->ExternalAddRef();
}

STDMETHODIMP_(ULONG) 
ComNoisyRobot::XNoiseInner::Release()
{
   METHOD_PROLOGUE(ComNoisyRobot, NoiseInner)
   return pThis->ExternalRelease();
}

STDMETHODIMP 
ComNoisyRobot::XNoiseInner::QueryInterface(REFIID riid, PPVOID ppv)
{
   METHOD_PROLOGUE(ComNoisyRobot, NoiseInner)
   return pThis->ExternalQueryInterface(&riid, ppv);
}


//
// INoise interface members for nested Noise class
//

STDMETHODIMP 
ComNoisyRobot::XNoiseInner::MakeNoise()
{
   METHOD_PROLOGUE(ComNoisyRobot, NoiseInner)
   VerboseMsg("In XNoiseInner::MakeNoise\n");

   PlaySound(MAKEINTRESOURCE(g_aiSoundIds[rand() % g_ulNumOtherSounds]),
             AfxGetResourceHandle(),
             SND_RESOURCE | SND_ASYNC);

   return NOERROR;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -