首先说明的是剪切板是系统提供的功能,可以用来实现进程间的通信,在VC中的实现也是很简单的。
以下是VC6.0 MFC环境:
- if(OpenClipboard()) //首先打开一个剪切板,如果成功则返回非0值
- {
- HANDLE hClip; //声明一个句柄
- CString str;
- char *pBuf;
- EmptyClipboard(); //置空这个剪切板,且得到剪切板的所有权
- GetDlgItemText(IDC_EDIT1,str);//将文本框的值赋给str
- hClip=GlobalAlloc(GMEM_MOVEABLE,str.GetLength()+1);
- //申请锁定一块存放数据的内存区域
- pBuf=(char *)GlobalLock(hClip);//得到指向内存区域的第一个字节指针
- strcpy(pBuf,str);//将文本框的值拷贝到内存中
- GlobalUnlock(hClip);//解除内存锁定
- SetClipboardData(CF_TEXT,hClip);//设置数据到剪切板中
- CloseClipboard();//关闭剪切板
- }
这样的话,输入在文本框的内容就已经被“复制”过了,此时正处于内存区域中,比如打开一个记事本,直接粘贴就能将内存提取出来,如此就做到了进城间的通信。
以下是“粘贴”的VC实现:
- if(OpenClipboard())//首先打开一个剪切板
- {
- if(IsClipboardFormatAvailable(CF_TEXT))//检查此时剪切板中数据是否为TEXT,可以设置成别的!
- {
- HANDLE hClip; //声明一个句柄
- char *pBuf;
- hClip=GetClipboardData(CF_TEXT);//得到剪切板的句柄
- pBuf=(char *)GlobalLock(hClip);//得到指向这块内存的指针
- GlobalUnlock(hClip);//解除内存锁定
- SetDlgItemText(IDC_EDIT2,pBuf);//将他设置给一个文本框显示
- CloseClipboard();//关闭此剪切板
- }
- }
这样就实现了“复制”,和“粘贴”的功能了,当然平时windows已经提供了此功能,不过我们主要还是利用它来进行进城间的通信。
原文:http://blog.csdn.net/jj12345jj198999/article/details/6653905