auto_clipboard

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

posted @ 2016-12-06 12:58  shansong.huang  阅读(471)  评论(0编辑  收藏  举报