我要提醒一下大家,看了我的博文学到的知识,千万不要用于实际开发,不然你会被你的上司骂: “妈的,这些东西哪来的,从来没有人这样做过。”不信你试试,脑细胞被冻结的经理或者技术总监们 肯定会这样说的。
如果是一些有X年工作经验(X永远不可能大于100)的程序员肯定会说:“你 怎么这么不成熟?”你如果被别人这么说之后,不知道你会不会很伤心,或者很生气?
我呢, 曾经被N个人这样教育过,不过你猜猜我当时的心情,我非常高兴,喜悦。为什么呢?
你不妨想 想,当一个人说你不成熟的时候,你说他其实在说什么,他其实是在说他自己很成熟,就因为他自己熟 得快腐烂了,满身恶臭,才会显得你不成熟,仔细想想,是不是这个事儿?
那么,成熟到底好 不好呢?我相信小学生都有这样的常识,当一个果子熟透了的时候,会怎么样?它会从树枝上高空坠落 ,然后狠巴巴地摔到地上,粉身碎骨。呵呵,所以,你现在明白了吧,当别人说我不成熟的时候,我会 非常高兴,我心里想:“快了快了,你快完蛋了。”
好,牛皮吹完,乐一乐。下面开始干正事 ,今天咱们来认识一下怎么操作粘贴板,即复制和粘贴数据。我不知道大家看不看恐怖片,反正我现在 不得不吓你一回。这个粘贴板的操作,其实挺痛苦的,所以,如果在实际开发中,我肯定用CLR的类来 弄,是的,这是我的做事原则,哪种方法最简单就用哪种,这叫什么?效率最大化,只有闲着没事干的 人才会简单问题复杂化。
不过呢,毕竟这里咱们要了解一下在Win32下操作粘贴板的,所以呢, 我还是用API来解决,至于CLR方法,相信你比我更会用,你不信算了,反正我信了,我不是菜鸟,但我 是菜鹤。
读写粘贴板就像我们上厕所一样,首先打开厕所门(调用OpenClipboard函数),然后 大动作(SetClipboardData或GetClipboardData),干完了出来,关上厕所门(调用CloseClipboard) 。
我说它有点痛苦是因为操作的时睺,与我们平常读写一些数据不同,数据写入到剪贴板后就 由操作系统接管了,期间你不能任意读写,就像公共厕所是提供给你用的,你不能在里面给人家装修, 拆掉人家的东西。
一、复制数据
我这里就不弄太复杂了,就复制一串文本吧,这也常 用。先看看代码。
//复制内容 //打开剪贴板 OpenClipboard(hdlg); //清空剪贴板 EmptyClipboard(); //向剪贴板中放东西 HWND hedt = GetDlgItem(hdlg, IDC_EDTCPY); WCHAR ntext[100]; SendMessage(hedt, WM_GETTEXT, (WPARAM)100, (LPARAM)ntext); //分配内存 HGLOBAL hgl = GlobalAlloc(GMEM_MOVEABLE, 100 * sizeof(WCHAR)); LPWSTR lpstrcpy = (LPWSTR)GlobalLock(hgl); memcpy(lpstrcpy, ntext, 100 * sizeof(WCHAR)); GlobalUnlock(hgl); SetClipboardData(CF_TEXT, lpstrcpy); //关闭剪贴板 CloseClipboard();
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据
, 剪贴板
, 如何给 发送粘贴板
厕所
,以便于您获取更多的相关知识。