剪切板底层机制

来源:互联网 发布:电车难题知乎 编辑:程序博客网 时间:2024/06/05 04:04

概要

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
0 0
原创粉丝点击