剪切板:系统维护的一个全局公共内存区域.每次只允许一个进程对其进行访问。
剪切板操作方法如下:(MSDN上搜索Clipboard Operations)
1.打开剪切板
Bool OpenClipboard(HWND hWndNewOwner);
指定关联到打开的剪切板的窗口句柄,传入NULL表示关联到当前任务。每次只允许一个进程打开并访问。
每打开一次就要关闭,否则其他进程无法访问剪切板。
2.清空剪切板
Bool EmptyClipboard(void)
写入前必须先清空,得到剪切板占有权
3.分配内存
HGLOBAL GlobalAlloc(UINT uFlags, SIZE_T dwBytes);
在堆上动态分配以字节为单位的内存区域。成功则指向该内存,失败NULL。参数:1.分配内存属性, 2.分配的大小
4.锁定内存
LPVOID GlobalLock(HGLOBAL hMem);
锁定由GlobalAlloc分配的内存,并将内存对象的锁定计数器+1,成功返回指向内存对象起始地址的指针。失败NULL
系统为每个全局内存对象维护一个锁定计数器,初始为0,GlobalLock使计数器+1,GlobalUnLock计数器-1.一旦计数器值大于0,
这块内存区域将不允许被移动或删除,只有当为0时,才解除对这块内存的锁定。如果分配时GMEM_FIXED属性,计数器一直为0
5.设置剪切板
HANDLE SetClipboardData(UINT uFormat, HANDLE hMem);
执行成功,返回数据句柄,否则返回NULL
6.解除锁定
BOOL GlobalUnlock(HGLOBAL hMem);
将GlobalAlloc分配的属性为GMEM_MOVEABLE的内存对象计数器-1.
7.关闭剪切板
Bool CloseClipboard(void);
必须关闭剪切板其他进程才能使用剪切板,且关闭后当前进程就不能写入数据。
8.获取剪切板数据
HANDLE GetClipboardData(UINT uFormat);
执行成功,返回数据句柄,否则返回NULL数据格式,指定格式的数据的句柄
一:UINT uFormate格式说明:标准剪贴簿数据格式
Windows程序设计:剪切板操作详解

本文详细介绍了Windows程序设计中剪切板的操作,包括打开、清空、分配内存、设置及获取数据等步骤,并阐述了不同数据格式如CF_TEXT、CF_BITMAP等以及内存属性GMEM_FIXED和GMEM_MOVEABLE等概念。还提到了剪切板监视器的实现。
最低0.47元/天 解锁文章
815

被折叠的 条评论
为什么被折叠?



