vc++里剪切板的一些技术

vc++里剪切板的一些技术

  (2006-10-10 13:56:11)

在我们自己的VC++ / MFC应用程序中增加剪贴板功能其实是很简单的事情。为了让你的程序可以与剪贴板对话,本文就其实现中的一些基本问题做一些实例讲解。

 


 

拷贝与粘贴文本

 

下边的源代码演示了如何将文本(包含在CString对象“source”中)拷贝到剪贴板上。

CString source;
//put your text in source
if(OpenClipboard())
{
         HGLOBAL clipbuffer;
         char * buffer;
         EmptyClipboard();
         clipbuffer = GlobalAlloc(GMEM_DDESHARE, source.GetLength()+1);
         buffer = (char*)GlobalLock(clipbuffer);
         strcpy(buffer, LPCSTR(source));
         GlobalUnlock(clipbuffer);
         SetClipboardData(CF_TEXT,clipbuffer);
         CloseClipboard();
}
 

反过来,下面的代码是用来实现从剪贴板上取得文本的。

char * buffer = NULL;
//open the clipboard
CString fromClipboard;
if ( OpenClipboard() )
{
         HANDLE hData = GetClipboardData( CF_TEXT );
         char * buffer = (char*)GlobalLock( hData );
         fromClipboard = buffer;
         GlobalUnlock( hData );
         CloseClipboard();
}

取得剪贴板变化通知(Getting notified of clipboard changes)

 

一旦剪贴板上的内容发生改变,我们都希望能够获知(经由windows消息),这是很有用的。你可以用函数SetClipboardViewer()来捕获WM_DRAWCLIPBOARD消息。

 
在你的初始化代码中调用:
         SetClipboardViewer();  //add us to clipboard change notification chain
 
在你的消息映射(message map)中添加:
         ON_MESSAGE(WM_DRAWCLIPBOARD, OnClipChange)  //clipboard change notification
 
将其定义为:
         afx_msg void OnClipChange();  //clipboard change notification
 
实现为:
void CDetectClipboardChangeDlg::OnClipChange()
{
         //do something here, for example
         CTime time = CTime::GetCurrentTime();
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值