剪切板底层机制

概要

BOOL WINAPI OpenClipboard( HWND hWnd );
BOOL WINAPI EmptyClipboard(void);
HANDLE WINAPI SetClipboardData(UINT wFormat, HANDLE hData);
BOOL WINAPI CloseClipboard(void);

例子

//打开剪切板
if(OpenClipboard(NULL))//NULL也可以替换成窗口句柄
{
     HGLOBAL hClip;
     TCHAR *pBuf;
TCHAR szHardWareID[1024] =”this is a sample!”;
     //清空剪切板内容
     EmptyClipboard();
     //分配新全局内存空间
     hClip=GlobalAlloc(GHND, 1024);            
     //锁住全局内存空间
     pBuf=(TCHAR *)GlobalLock(hClip);
     //将内容写入全局内存空间
     memcpy(pBuf, szHardWareID, strlen(szHardWareID));
       //将空间中的内容写入剪切板
#ifndef UNICODE
         SetClipboardData(CF_TEXT, hClip);         //设置数据
#else
         SetClipboardData(CF_UNICODETEXT, hClip);         //设置数据
#endif
         //解锁全局内存空间
         GlobalUnlock(hClip);         //解锁
         //释放全局内存空间
GlobalFree(hClip);
         //关闭剪切板
         CloseClipboard();  
}

详细

1、 BOOL WINAPI OpenClipboard( HWND hWnd )

Created with Raphaël 2.1.0UserUseruser32user32serverserverOpenClipboard(hWnd)窗口句柄open_clipboard记录句柄TRUETRUE

2、BOOL WINAPI EmptyClipboard(void)

Created with Raphaël 2.1.0UserUseruser32user32serverserverX11X11EmptyClipboardWM_DESTROYCLIPBOARD(如果窗口句柄不为空)empty_clipboardvoidX11DRV_EmptyClipboardX11DRV_AcquireClipboardempty_clipboardTRUETRUE

3、HANDLE WINAPI SetClipboardData(UINT wFormat, HANDLE hData)

Created with Raphaël 2.1.0UserUseruser32user32X11X11SetClipboardDataX11DRV_SetClipboardDataX11DRV_CLIPBOARD_UpdateCacheX11DRV_CLIPBOARD_InsertClipboardDataTRUETRUE

4、BOOL WINAPI CloseClipboard(void)

Created with Raphaël 2.1.0UserUseruser32user32X11X11CloseClipboardX11DRV_EndClipboardUpdatesynthesizedata(CF_TEXT)synthesizedata(CF_OEMTEXT)synthesizedata(CF_UNICODETEXT)synthesizedata(CF_ENHMETAFILE)synthesizedata(CF_METAFILEPICT)synthesizedata(CF_DIB)synthesizedata(CF_BITMAP)TRUETRUE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值