20(补充).实现简单的计算器

本文介绍了如何使用C++实现将数据复制到剪切板及从剪切板读取数据的操作。包括了设置剪切板数据格式、打开和关闭剪切板、分配内存、拷贝数据等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.将计算结果保存到剪切板
在按钮函数里添加如下函数

if (!OpenClipboard())//打开剪切板
	{
		return;
	}
	if (!EmptyClipboard())//清空剪切板的数据
	{
		CloseClipboard();
		return;
	}
	CString str;
	GetDlgItemText(IDC_STATIC_RESULT, str);
	size_t cbStr = (str.GetLength() + 1) * sizeof(TCHAR);//申请的字节空间
	HGLOBAL hData = GlobalAlloc(GMEM_MOVEABLE, cbStr);//获取剪切板内数据
	memcpy_s(GlobalLock(hData), cbStr, str.LockBuffer(), cbStr);
	GlobalUnlock(hData);
	str.UnlockBuffer();

	UINT mFormat = (sizeof(TCHAR) == sizeof(WCHAR) ? CF_UNICODETEXT: CF_TEXT);//剪切板格式
	if (::SetClipboardData(mFormat, hData)==NULL)//拷贝数据到剪切板
	{
		MessageBox(_T("剪切板拷贝数据失败。"));
		CloseClipboard();//关闭剪切板
		return;
	}

	CloseClipboard();
	MessageBox(_T("剪切板拷贝数据成功。"));

2.粘贴操作
在按钮函数里添加如下函数

UINT mFormat = (sizeof(TCHAR) == sizeof(WCHAR) ? CF_UNICODETEXT : CF_TEXT);//剪切板格式
	if (!IsClipboardFormatAvailable(mFormat))//判断剪切板格式
	{
		return;
	}
	if (!OpenClipboard())//打开剪切板
	{
		return;
	}

	HANDLE hGlobal = GetClipboardData(mFormat);//得到剪切板数据
	if (hGlobal != NULL)
	{
		LPTSTR lptstr = (LPTSTR)GlobalLock(hGlobal);
		if (lptstr != NULL)
		{
			MessageBox(lptstr);
			GlobalUnlock(hGlobal);
		}
	}
	CloseClipboard();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值