码龄10年
暂无认证
43333
访问
1
等级
8
获赞
3
评论
热门文章
-
一.某岛之人物对象及其加密函数解析
2653
-
一.《传奇M》装备栏遍历的突破口
2281
-
二.某龙端游中LUA的分析和调用
2035
-
一.窗口坐标与屏幕坐标
1756
-
一.《轩辕传奇》周围遍历之二叉树
1754
最新评论
-
20240228阿⑤
积分乍获得
-
20231124ziher
666
-
20230909八月老师
什麼時候發佈易語言支持庫呢
七.简单剪切板文本操作(Win32, C++)
Heart
2024-06-02 09:32:19 发布
314
分类专栏: WIN32开发 文章标签: 剪切板操作
#pragma once
#include #include
#ifdef _UNICODE
using _tstring = std::wstring;
#else
using _tstring = std::string;
#endif
class CClipboardUtils
{
public:
static bool SetText(const _tstring& strText);
static bool GetText(_tstring& strText);
static bool Empty();
};#include "CClipboardUtils.h"
#include #include
bool CClipboardUtils::SetText(const _tstring& strText)
{
HANDLE hGlobalMem = nullptr;
bool bReturnResult = false;
// 打开粘贴板
if (!::OpenClipboard(nullptr))
{
return false;
}
do
{
// 分配全局内存
SIZE_T nCbSize = (strText.size() + 1) * sizeof(TCHAR);
hGlobalMem = ::GlobalAlloc(GMEM_MOVEABLE, nCbSize);
if (nullptr == hGlobalMem)
{
break;
}
// 锁定全局内存
LPTSTR pData = (LPTSTR)::GlobalLock(hGlobalMem);
if (nullptr == pData)
{
break;
}
// 操作全局内存数据
::CopyMemory(pData, strText.c_str(), nCbSize);
// 解锁全局内存
(void)::GlobalUnlock(hGlobalMem);
// 清空粘贴板
if (!::EmptyClipboard())
{
break;
}
// 设置粘贴板文本数据
if (nullptr != ::SetClipboardData(CF_TEXT, hGlobalMem))
{
bReturnResult = true;
}
} while (false);
if (nullptr != hGlobalMem)
{
// 释放全局内存
::GlobalFree(hGlobalMem);
}
// 关闭粘贴板
::CloseClipboard();
return bReturnResult;
}
bool CClipboardUtils::GetText(_tstring& strText)
{
bool bReturnResult = false;
// 打开粘贴板
if (!::OpenClipboard(nullptr))
{
return false;
}
do
{
// 获取粘贴板数据
HANDLE hGlobalMem = ::GetClipboardData(CF_TEXT);
if (nullptr == hGlobalMem)
{
break;
}
LPTSTR pData = (LPTSTR)::GlobalLock(hGlobalMem);
if (nullptr == pData)
{
break;
}
// 操作全局内存数据
strText = pData;
bReturnResult = true;
// 解锁全局内存
(void)::GlobalUnlock(hGlobalMem);
} while (false);
// 关闭粘贴板
::CloseClipboard();
return bReturnResult;
}
bool CClipboardUtils::Empty()
{
bool bOpenResult = false;
// 打开粘贴板
if (!::OpenClipboard(nullptr))
{
return false;
}
// 清空粘贴板
if (::EmptyClipboard())
{
bOpenResult = true;
}
// 关闭粘贴板
::CloseClipboard();
return bOpenResult;
}
网友评论
0条评论 0人参与
评论列表
0
0