auto_clipboard

时间:2021-03-17 15:53:35

黄山松发表于博客园: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

相关文章