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

📄 clipb.cpp

📁 本软件是简单的文本编辑器
💻 CPP
字号:
/********************************************************************
* 剪贴板的实现:                                                    
* 当拷贝到剪贴板的字符数小于80时,存放在clip[80]数组中,
* 否则存放在文件clp.tmp中。                                         
* 变量cFileOrBuf用于区分数据在数组中还是在文件中,                   
* 变量cCount用于指示数组空间是否用完,以此打开文件Clp.tmp来存储数据。       
********************************************************************/
#define mINBUF  0
#define mINFILE 1

//定义剪贴板类
class ClipBoardClass
{
  private:
    char cClip[80];
    char cFileOrBuf;
    unsigned char cCount;
    FILE *fp;
  public:
    ClipBoardClass();
    void ClpClose();
    void ClpOpen();
    char ClpRead();
    void ClpWrite(char cChar);
};

//定义构造函数
ClipBoardClass::ClipBoardClass()
{
  //完成初始化操作,以可读写方式建立一个名为Clp.tmp的文件
  fp=fopen("c:\\Clp.tmp","w+");
  if(fp!=NULL) fclose(fp);
  else printf("ClipBoard Initial Error");
  cFileOrBuf=mINBUF;
}

//定义剪贴板关闭函数
void ClipBoardClass::ClpClose()
{
  //关闭前将字符串末尾添上结束标志
  cFileOrBuf=cCount==0xff?mINFILE:mINBUF;
  if(cFileOrBuf==mINFILE) fputc('\0',fp);
  else cClip[cCount]='\0';
  fclose(fp);
}

//定义剪贴板文件打开函数
void ClipBoardClass::ClpOpen()
{
  //以可读写方式打开已有的文件Clp.tmp
  fp=fopen("c:\\Clp.tmp","r+");
  cCount=0;
}

//定义从剪贴板读出数据的函数
char ClipBoardClass::ClpRead()
{
  //如果数据在数组中,就从数组中读取;若在文件中,就从文件中读取
  if(cFileOrBuf==mINBUF&&cCount<80&&cClip[cCount]!='\0') return cClip[cCount++];
  if(cFileOrBuf==mINFILE&&fp!=NULL&&!feof(fp)) return fgetc(fp);
  return 0;
}

//定义写数据到剪贴板的函数
void ClipBoardClass::ClpWrite(char cChar)
{
  //如果要写入的字符数小于79,则写到数组中
  if(cCount<79) cClip[cCount++]=cChar;
  
  //否则写到文件中
  if(cCount==79)	//将已经在内存中的数据转写入文件
  {
    for(int i=0;i<79;i++) fputc(cClip[i],fp);
    cCount=0xff;
  }
  if(cCount==0xff) fputc(cChar,fp);
}

//定义剪贴板
ClipBoardClass ClipBoard;

⌨️ 快捷键说明

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