MFC如何操作剪贴板

0

怎么在MFC中把一个CString的内容放到用户的剪贴板上,可以帮我做一个实现这个功能的函数吗?

ava
huidong

2020-2-11

1
//这个函数必须是成员函数,否则以下代码行不通
void CXXXDlg::copy(CString str)//参数str就是要放到剪贴板中的内容
{
    if (this->OpenClipboard())   //如果能打开剪贴板  
    {
        ::EmptyClipboard();  //清空剪贴板,使该窗口成为剪贴板的拥有者  
        HGLOBAL hClip;
        //判断要是文本数据,分配内存时多分配一个字符  
        hClip = ::GlobalAlloc(GMEM_MOVEABLE, (str.GetLength() * 2) + 2); 
        TCHAR *pBuf;
        pBuf = (TCHAR *)::GlobalLock(hClip);//锁定剪贴板  
        lstrcpy(pBuf, str);//把CString转换  
        ::GlobalUnlock(hClip);//解除锁定剪贴板  
        ::SetClipboardData(CF_UNICODETEXT, hClip);//把文本数据发送到剪贴板  CF_UNICODETEXT为Unicode编码  
        ::CloseClipboard();//关闭剪贴板  
    }
}

已解决!

ava
huidong

2020-2-11

我认为不需要必须是成员函数。 -  慢羊羊  2020-2-11
技术讨论社区