黄山松发表于博客园:http://www.cnblogs.com/tomview/p/6137179.html
#ifndef __HSS_AUTO_CLIPBOARD_HSS__
#define __HSS_AUTO_CLIPBOARD_HSS__
/*********************************************************************************\
* 2012-10-30
自动复制内容到剪贴板
用法:
复制:
auto_clipboard a(hwnd, psz);
粘贴:
CString sz;
auto_clipboard::GetText(sz);
\***************************************************************************/
class auto_clipboard
{
public:
auto_clipboard(HWND hwnd, LPCTSTR pszText)
{
if (::OpenClipboard(hwnd))
{
::EmptyClipboard();
HANDLE hMem = ::GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE , strlen(pszText)+1);
if (hMem)
{
char* pszMem = (char*)(::GlobalLock(hMem));
if (pszMem)
{
strcpy(pszMem, pszText);
::GlobalUnlock(hMem);
SetClipboardData(CF_TEXT, hMem);
}
::GlobalFree(hMem);
}
CloseClipboard();
}
}
~auto_clipboard()
{
}
/*************************************************************************\
* auto_clipboard : 2014年12月2日
* CString sz :
\**************************************************************************/
#ifdef __AFX_H__
static BOOL GetText(CString& sz)
{
if (!OpenClipboard(0))
return FALSE;
HANDLE hClip = GetClipboardData(CF_TEXT);
if (hClip == 0)
{
CloseClipboard();
return FALSE;
}
LPVOID pRes = (LPVOID)GlobalLock(hClip);
if (pRes == 0)
{
CloseClipboard();
return FALSE;
}
sz = (char*)pRes;
GlobalUnlock(hClip);
CloseClipboard();
return TRUE;
}
#endif
};
#endif