📄 clipb.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 + -