首页 > 代码库 > 剪贴板(clipboard)功能
剪贴板(clipboard)功能
一、 打开并清空剪贴板
二、 分配全局内存
三、 向全局内存放入想要拷贝的内容
四、 把内容送到剪贴板
五、 关闭剪贴板,以使其它程序可以访问,释放掉全局内存
OpenClipboard
EmptyClipboard
GlobalAlloc
SetClipboardData
CloseClipboard
GlobalFree
void CMyWindowDlg::On32771()
{
char stext[] ="QQ 150330575";
HGLOBAL p=NULL;
if(OpenClipboard())
{ EmptyClipboard();
HGLOBAL hmem=GlobalAlloc(GHND,sizeof(stext));
char *pmem=(char*)GlobalLock(hmem);
memcpy(pmem,stext,sizeof(stext));
//GlobalUnlock(hmem);
SetClipboardData(CF_TEXT,hmem);
CloseClipboard();
//memcpy(pmem,"000000",7);
p= GlobalFree(hmem); //释放内存空间
}
}
/******************************************************************/
一、 判断剪贴数据格式是否是我们需要的
二、 打开剪贴板
三、 获取剪贴板句柄
四、 锁定全局内存获取缓冲区指针,取出数据
五、 关闭剪贴板,以使其它程序可以访问,释放掉内存锁
IsClipboardFormatAvailable
GetClipboardData
GlobalSize
void CMyWindowDlg::OnMenuPaste()
{
// TODO: 在此添加命令处理程序代码
//一、判断剪贴数据格式是否是我们需要的
HGLOBAL hmem=NULL;
char s[256]="";
if (IsClipboardFormatAvailable(CF_TEXT)) //CF_UNICODETEXT
{
//二、打开剪贴板
if (OpenClipboard())
{
//三、获取剪贴板句柄
hmem=GetClipboardData(CF_TEXT);
if (hmem)
{
//四、锁定全局内存获取缓冲区指针,
char* ps=(char*) GlobalLock(hmem);
//取出数据
memcpy(s,ps,GlobalSize(hmem));
}
}
}
//五、关闭剪贴板,以使其它程序可以访问,释放掉内存锁
CloseClipboard();
GlobalUnlock(hmem);
m_edt_cs=s;
UpdateData(false);
}
//UniCode 版本
void CMyWindowDlg::OnMenuPaste()
{
// TODO: 在此添加命令处理程序代码
WCHAR sc[256];
HGLOBAL hmem=NULL;
if (OpenClipboard())//是否成功打开剪帖板
{
if ( IsClipboardFormatAvailable(CF_UNICODETEXT))
{
//SetClipboardData()
hmem=GetClipboardData(CF_UNICODETEXT);//CF_UNICODETEXT
LPCTSTRpmem= (LPCTSTR)GlobalLock(hmem);
if (pmem)
{
memcpy(sc,pmem,GlobalSize(hmem));
//关闭剪贴板
CloseClipboard();
GlobalUnlock(hmem);
GlobalFree(hmem);//释放全局内存
m_edt_cs=sc;
UpdateData(false);
}
}
}