代码改变世界

win32剪切板学习笔记

2011-10-09 19:59  捣乱小子  阅读(521)  评论(0编辑  收藏  举报

win32 api的剪切板操作很有趣。

①数据准备好后,向剪切板传输数据需要步骤:

HGLOBAL hGlobal;

PTSTR pGlobal;

hGlobal = ::GlobalAlloc(GHND|GMEM_SHARE,iSize);

//其中#define GHND (GMEM_MOVEABLE | GMEM_ZEROINIT)

pGlobal = (PTSTR)::GlobalLock(hGlobal);

//只有锁定时,才返回指针P

锁定之后就准备数据,将数据拷贝到pGlobal,注意拷贝之后就解锁;解锁之后再将其设置到剪切板。

::OpenClipboard(hwnd);
::EmptyClipboard();
::SetClipboardData(iFormat,hGlobal);
::CloseClipboard();

②从剪切板提取数据:

::OpenClipboard(hwnd); 
pText = (PTSTR)malloc(::GlobalSize(hGlobal));
lstrcpy(pText,pGlobal);
//while(pText++ = pGlobal++)