700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 剪切板的使用: 复制 粘贴

剪切板的使用: 复制 粘贴

时间:2020-09-15 20:47:35

相关推荐

剪切板的使用: 复制 粘贴

目录

一、MFC使用

1、将字符串复制到剪贴板中

2、获得剪贴板中字符串

二、整理封装如下:

1、复制

2、粘贴

一、MFC使用

1、将字符串复制到剪贴板中

使用OnCopy() 响应复制操作:

将字符串nStr复制到剪切板中

//剪切板操作if(!OpenClipboard()){AfxMessageBox(L"不能打开剪贴板!");return;}if(!EmptyClipboard()){AfxMessageBox(L"不能清空剪贴板!");CloseClipboard();return;}HGLOBAL hGlobal;LPTSTR pGlobal;//分配全局空间hGlobal=GlobalAlloc(GMEM_DDESHARE,nStr.GetLength()*2+2);pGlobal=(LPTSTR)GlobalLock(hGlobal);//为空间赋值lstrcpy(pGlobal,nStr);GlobalUnlock(hGlobal);//将内存hGlobal上的数据按一定格式复制到剪切板中if(!SetClipboardData(CF_UNICODETEXT,hGlobal)){AfxMessageBox(L"不能复制到剪贴板!");}CloseClipboard();

2、获得剪贴板中字符串

使用OnPaste() 进行粘贴:

将剪切板中的数据复制到字符串中

HANDLE hGlobal;wchar_t* pGlobal;if(!OpenClipboard()){AfxMessageBox(L"不能打开剪贴板!");return;}if(!(hGlobal=GetClipboardData(CF_UNICODETEXT))){AfxMessageBox(L"不能获取剪贴板数据!");CloseClipboard();return;}pGlobal=(wchar_t*)GlobalLock(hGlobal);GlobalUnlock(hGlobal);CloseClipboard();CString nStr=pGlobal;

二、整理封装如下:

1、复制

void CopyToClipboard(std::wstring nStr){if (!OpenClipboard(nullptr)){//AfxMessageBox(L"不能打开剪贴板!");return ;}if (!EmptyClipboard()){//AfxMessageBox(L"不能清空剪贴板!");CloseClipboard();return ;}HGLOBAL hGlobal;LPTSTR pGlobal;int nLen = nStr.length() + 1;//分配全局空间hGlobal = GlobalAlloc(GMEM_DDESHARE, nLen * 2);pGlobal = (LPTSTR)GlobalLock(hGlobal);//为空间赋值lstrcpy(pGlobal, nStr.c_str());GlobalUnlock(hGlobal);//将内存hGlobal上的数据按一定格式复制到剪切板中if (!SetClipboardData(CF_UNICODETEXT, hGlobal)){//AfxMessageBox(L"不能复制到剪贴板!");}CloseClipboard();}

2、粘贴

std::wstring GetStrFromClipBoard(){HANDLE hGlobal;wchar_t* pGlobal;if (!OpenClipboard(nullptr)){return L"";}if (!(hGlobal = GetClipboardData(CF_UNICODETEXT))){CloseClipboard();return L"";}pGlobal = (wchar_t*)GlobalLock(hGlobal);GlobalUnlock(hGlobal);CloseClipboard();std::wstring nStr = pGlobal;return nStr;}

参考资料:

WINDOWS 剪切板操作_scuabin的博客-CSDN博客

如流,新一代智能工作平台

剪切板操作SetClipboardData GetClipboardData_ycc89的博客-CSDN博客_setclipboarddata

SetClipboardData function (winuser.h) - Win32 apps | Microsoft Docs

C++内存分配秘籍—new,malloc,GlobalAlloc详解 - gaochaooo - 博客园

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。