设为首页 加入收藏

TOP

进程间通信(剪切板)(附实例)
2014-11-23 21:30:17 】 浏览:403
Tags:进程 通信 剪切 实例

By 闲鸟归来 , Posted in 死亡笔记
01 /*...客户端*/
02 void CClipboardClientDlg::OnBtnCopytext()
03 {
04 // TODO: Add your control notification handler code here
05 UpdateData(TRUE); // 更新
06 if ( m_strMessage.IsEmpty() )
07 {
08 ::AfxMessageBox("文本框的内容不能为空~");
09 return ;
10 }
11 BOOL bSucceed = OpenClipboard(); // 返回0代表打开剪切板失败~
12 if ( !bSucceed )
13 {
14 return ;
15 }
16 EmptyClipboard(); // 清空剪切板并释放剪切板内数据的句柄
17 HANDLE hMemClip = GlobalAlloc(GMEM_MOVEABLE, m_strMessage.GetLength() + 1); // 指定如何分配内存
18 TCHAR* pBuffer = (TCHAR*)GlobalLock(hMemClip); // 目的是为了保证内存管理时真的是用【内存】而不是【虚拟内存的磁盘镜像】,否则效率会降低
19 strcpy(pBuffer, m_strMessage); // m_strMessage对应IDC_EDIT
20 GlobalUnlock(hMemClip); // 解除锁定的内存块,使指向该内存块的指针无效
21 SetClipboardData(CF_TEXT, hMemClip);
22 CloseClipboard(); // 关闭剪切板
23 ::AfxMessageBox("剪切数据成功~");
24 }
25
26 如图:

27
28
29 /*...服务端*/
30 void CClipboardServerDlg::OnBtnPaste()
31 {
32 // TODO: Add your control notification handler code here
33 BOOL bSucceed = OpenClipboard();
34 if ( !bSucceed )
35 {
36 return ;
37
38 }
39 if ( !IsClipboardFormatAvailable(CF_TEXT) )
40 {
41 return ;
42 }
43 HANDLE hMemClip = GetClipboardData(CF_TEXT);
44 TCHAR* pBuffer = (TCHAR*)GlobalLock(hMemClip);
45 GlobalUnlock(hMemClip);
46 m_strMessage = pBuffer;
47 CloseClipboard();
48
49 UpdateData(FALSE);
50 }
51
52 如图:

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇VC实现进程间通信(MailSlot附实.. 下一篇VC简单shell实现自删除功能

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目