

码龄10年
暂无认证
34148访问
1
等级
8获赞
3
评论
热门文章
-
一.某岛之人物对象及其加密函数解析
2148
-
一.《传奇M》装备栏遍历的突破口
1791
-
二.某龙端游中LUA的分析和调用
1539
-
一.《轩辕传奇》周围遍历之二叉树
1386
-
一.《UE4奥丁》人物最大属性
1331
最新评论
-
20240228阿⑤
积分乍获得
-
20231124ziher
666
-
20230909八月老师
什麼時候發佈易語言支持庫呢
七.简单剪切板文本操作(Win32, C++)
Heart
2024-06-02 09:32:19 发布
238
分类专栏: 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; }


评论列表