MFC剪切板应用
将数据COPY到剪切板原理:
1:OpenClipboard() 打开剪切板
2:EmptyClipboard() 清空剪切板,让当前进程拥有剪切板
3:GlobalAlloc() 分配全局堆内存
4:GlobalLock() 锁定内存并返回内存首地址
5:strcpy() 给内存赋值
6:GlobalUnlock() 解锁内存
7:SetClipboardData() 设置到剪切板
8:CloseClipboard() 关闭剪切板
- void CClipboardDlg::OnBnClickedButton2()
- {
- if(OpenClipboard())//打开剪切板
- {
- EmptyClipboard();//清空剪切板,让当前窗口进程拥有剪切板
- CString Str;
- GetDlgItemText(IDC_EDIT_SEND,Str);//获取数据
- HANDLE hClip;
- hClip=GlobalAlloc(GMEM_MOVEABLE,Str.GetLength()+1);//分配内存对象返回地址(该函数是系统从全局堆中分配内存)
- char *pBuf;
- pBuf=(char *)GlobalLock(hClip);//锁定全局内存中指定的内存块,并返回一个地址值,令其指向内存块的起始处
- strcpy(pBuf,Str);//将Str对象中的数据Copy到内存空间中
- GlobalUnlock(hClip);//解锁全局内存块
- SetClipboardData(CF_TEXT,hClip);//设置剪贴板数据
- CloseClipboard();//关闭
- }
- }
- void CClipboardDlg::OnBnClickedButton1()
- {
- // TODO: 在此添加控件通知处理程序代码
- if(IsClipboardFormatAvailable(CF_TEXT))//获取剪贴板里的格式是否可以处理
- {
- if(OpenClipboard())
- {
- HANDLE hClip;
- char *pBuf;
- hClip=GetClipboardData(CF_TEXT); //检索从指定格式剪贴板数据,并返回一个剪贴板对象句柄
- pBuf=(char *)GlobalLock(hClip);//锁定全局内存中指定的内存块 并返回一个地址值,并返回数据指针头地址
- GlobalUnlock(hClip); //解锁
- SetDlgItemText(IDC_EDIT_RECV,pBuf);
- CloseClipboard();
- }
- }
- }