LongMsg.h
上传用户:fs3633
上传日期:2021-05-14
资源大小:909k
文件大小:3k
源码类别:

midi

开发平台:

Visual C++

  1. #ifndef LONG_MSG_H
  2. #define LONG_MSG_H
  3. /*
  4.   LongMsg.h
  5.   CLongMsg class declaration. This class represents a system exclusive 
  6.   MIDI message.
  7.   Copyright (C) 2002 Leslie Sanford
  8.   This library is free software; you can redistribute it and/or
  9.   modify it under the terms of the GNU Lesser General Public
  10.   License as published by the Free Software Foundation; either
  11.   version 2.1 of the License, or (at your option) any later version.
  12.   This library is distributed in the hope that it will be useful,
  13.   but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15.   Lesser General Public License for more details.
  16.   You should have received a copy of the GNU Lesser General Public
  17.   License along with this library; if not, write to the Free Software
  18.   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 
  19.   USA
  20.   Contact: Leslie Sanford (jabberdabber@hotmail.com)
  21.   Last modified: 12/14/2002
  22. */
  23. //---------------------------------------------------------------------
  24. // Dependencies
  25. //---------------------------------------------------------------------
  26. #include "MIDIMsg.h"    // For CMIDIMsg base class
  27. #include <exception>    // For std::exception
  28. namespace midi
  29. {
  30.     //-----------------------------------------------------------------
  31.     // CLongMsgIndexOutOfBounds class
  32.     //
  33.     // An exception class. Thrown when an index to a CLongMsg object is
  34.     // out of bounds.
  35.     //-----------------------------------------------------------------
  36.     class CLongMsgIndexOutOfBounds : public std::exception
  37.     {
  38.     public:
  39.         const char *what() const
  40.         { return "Index to CLongMsg object is out of bounds."; }
  41.     };
  42.     //-----------------------------------------------------------------
  43.     // CLongMsg class
  44.     //
  45.     // This class represents system exclusive messages.
  46.     //-----------------------------------------------------------------
  47.     class CLongMsg : public CMIDIMsg
  48.     {
  49.     public:
  50.         // Constructors/Destructor
  51.         CLongMsg();
  52.         CLongMsg(const char *Msg, DWORD Length);
  53.         CLongMsg(const CLongMsg &Msg);
  54.         virtual ~CLongMsg();
  55.         // Assignment
  56.         CLongMsg &operator = (const CLongMsg &Msg);
  57.         
  58.         // Sends message
  59.         void SendMsg(midi::CMIDIOutDevice &OutDevice);
  60.         // Accessors/Mutators
  61.         DWORD GetLength() const { return m_Length; }
  62.         const char *GetMsg() const { return m_Msg;}
  63.         void SetMsg(const char *Msg, DWORD Length);
  64.     protected:
  65.         // Subscript access. This is for derived classes to use in order
  66.         // to access the individual bytes within a CLongMsg object.
  67.         char &operator [] (int i);
  68.     private:
  69.         char *m_Msg;
  70.         DWORD m_Length;        
  71.     };
  72. }
  73. #endif