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

📄 key.h

📁 miXo is a buzz machine (www.buzzmachines.com) - a plugin for the freely available jeskola buzz track
💻 H
字号:
// Key.h: interface for the CKey class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_KEY_H__A0AE6BA0_42EF_11D5_8DCF_B30311848839__INCLUDED_)
#define AFX_KEY_H__A0AE6BA0_42EF_11D5_8DCF_B30311848839__INCLUDED_

#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000

#include <string>
#include "AbException.h"
#include "cmd.h"
class CCmdCompileException : public CAbException
{
public:
	virtual ~CCmdCompileException() {};
};
using namespace std;
class CMachineDataInput;
class CMachineDataOutput;
//typedef string TCmdSeq;
//typedef char TCmd;

class CCmdDescToken
{
	cmd::TCmd m_cmd;
	string m_str;
	int m_iPara;
public:
	CCmdDescToken(cmd::TCmd c,string s,int i):
	m_cmd(c),m_str(s),m_iPara(i) {};
	virtual ~CCmdDescToken() {}
	cmd::TCmd Cmd() const { return m_cmd; }
	string Desc() const { return m_str; }
	int NumOfPara() const { return m_iPara; }
};
class CCmdSeq
{
	string m_str;
public:
	CCmdSeq() : m_str() {};
	CCmdSeq(const CCmdSeq &c) : m_str(c.m_str) {};
	CCmdSeq(char c,char c1) : m_str() { m_str+=c;m_str+=c1; };
	CCmdSeq(const char *sz) : m_str(sz) {}
	virtual ~CCmdSeq() {};
	cmd::TCmd Get(int i) const { return static_cast<const cmd::TCmd>(m_str[i]); }
//	TCmd operator [] (int i) const { return Get(i); }
	void Clear() { m_str=""; }
	void Set(const string &c) {m_str=c; }
	const char *Getc_str() const { return m_str.c_str(); }
	int GetSize() const { return m_str.length(); }
	const char *GetDispText(cmd::TCmd,int&) const;
	void Compile(string) throw(CCmdCompileException);
	void AddFloat(const float);
	void AddChar(const char c)  { m_str+=c; }
	void AddCmd(const cmd::TCmd c)  { m_str+=c; }
	CCmdSeq &operator <<(const float f) { AddFloat(f); return *this; }
	CCmdSeq &operator <<(const cmd::TCmd c) { AddCmd(c); return *this; }
	CCmdSeq &operator <<(const char c) { AddChar(c); return *this; }
//	CCmdSeq &operator +(float f) { 
//	friend operator = {const string &c) {m_str=c; }
};


class CAbKey  
{
	CCmdSeq m_CmdSeq;
public:
	CAbKey() : m_CmdSeq() {};
	CAbKey(CCmdSeq s) : m_CmdSeq(s) {};
	CAbKey(const CAbKey &c) : m_CmdSeq(c.m_CmdSeq) {}
	virtual ~CAbKey() {};
	const CCmdSeq &GetCmd() const { return m_CmdSeq;}
	const cmd::TCmd GetFirstCmd() const { return m_CmdSeq.Get(0); }
	void Compile(string s) throw (CCmdCompileException) { m_CmdSeq.Compile(s); }
	void SetCmd(CCmdSeq s) { m_CmdSeq=s;}
	virtual void Init(CMachineDataInput * const pi,unsigned);
	virtual void Save(CMachineDataOutput * const po);
	virtual int Key() const =0;
	virtual int GetClassId() const { return 0; }
	virtual const char *GetDispKey() const =0;
};
class CKey : public CAbKey
{
//	char m_cKey[2];
	long m_uVirtKey;
	string m_str;
public:
	CKey() : CAbKey(),m_uVirtKey(0) {};
	virtual ~CKey() {}
//	CKey(char k,CCmdSeq s) : CAbKey(s),m_uVirtKey(0) {m_uVirtKey=GetVirtKey(k);m_cKey[0]=k;m_cKey[1]=0;/*m_uVirtKey=GetVirtKey(k);*/ }
	CKey(char k,CCmdSeq s);
//	CKey(const CKey &c) : CAbKey(c),m_uVirtKey(c.m_uVirtKey) {m_cKey[0]=c.m_cKey[0];m_cKey[1]=c.m_cKey[1]; }
	CKey(const CKey &c) : CAbKey(c),m_uVirtKey(c.m_uVirtKey),m_str(c.m_str) {}
	virtual int Key() const { return m_uVirtKey; };
	virtual void Init(CMachineDataInput * const pi,unsigned);
	virtual void Save(CMachineDataOutput * const po);
	virtual int GetClassId() const { return 1; }
	virtual const char *GetDispKey() const { return m_str.c_str(); }
	virtual unsigned GetVirtKey() const { return m_uVirtKey; }
	void SetVirtKey(int iKey,long lKeyData);
protected:
	virtual unsigned GetVirtKey(char) const;
	long RemapVirtKey(long)const;
};

#endif // !defined(AFX_KEY_H__A0AE6BA0_42EF_11D5_8DCF_B30311848839__INCLUDED_)

⌨️ 快捷键说明

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