auto_clipboard

松树发布于天涯论坛:

#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

本文由澳门威斯尼人平台登录发布于 操作系统,转载请注明出处:auto_clipboard

相关阅读