使用Visual C++实现OLE剪贴板
2008-11-13 19:30:10 来源:WEB开发网---- 从上例总结一下,我们应当作的事情大致有:注册自定义的格式、传输格式到剪贴板上以及实现复制、剪切和粘贴。
---- 注册自定义格式
---- OLE剪贴板中的数据存在于多种格式。当一个用户选择从剪贴板粘贴数据时,应用程序应当能够选择使用何种格式粘贴数据。应用程序应当提供大部分格式的信息,除非用户指定使用某一种特定格式粘贴(比如只粘贴文字或只粘贴图片等)。
---- Windows定义了很多能够通过剪贴板传输的标准格式(见表1),OLE也定义了很多特殊的格式。应用程序可以通过获取更加详细的信息来注册他们自己的剪贴板格式。这可以通过使用Win32 API函数RegisterClipboardFormat来实现:
---- RegisterClipboardFormat ( lpszFormat );
---- 说明 lpzxFormat是指向一个字符串的指针,用以命名自定义的格式。该函数返回无符号整数,该数即为格式的ID号
---- 在注册了自定义的格式之后,便可以使用RegisterClipboardFormat函数的返回值来标识并使用该格式。
---- 将格式传输到剪贴板上
---- 要增加更多的格式到剪贴板上,你必须从COleClientItem或COleServerItem继承一个类,并且在该类中重载OnGetClipboardData函数。在这个函数中,你应当做按照下列步骤完成。
---- 将更多的格式放置在剪贴板上
---- 1. 建立一个COleDataSource对象。
---- 2. 传递该数据源到一个函数,用该函数通过访问COleDataSource::CacheGlobalData函数来将你的数据格式添加到支持的格式列表。
---- 3. 通过访问COleDataSource::CacheGlobalData,为每一个你向支持的格式添加标准格式。
---- 程序示例:
COleDataSource* CMyItem::OnGetClipboardData(
BOOL bIncludeLink,LPPOINT pptOffset, LPSIZE pSize)
{
ASSERT_VALID(this);
if (m_pServerNode == NULL)
return NULL;
COleDataSource* pDataSource =
new COleDataSource;
TRY
{
GetNativeClipboardData(pDataSource);
GetClipboardData(pDataSource, bIncludeLink,
pptOffset, pSize);
}
CATCH_ALL(e)
{
delete pDataSource;
THROW_LAST();
}
END_CATCH_ALL
ASSERT_VALID(pDataSource);
return pDataSource;
}
- ››使用脚本恢复WinXP系统的用户登录密码
- ››使用phpMyadmin创建数据库及独立数据库帐号
- ››使用Zend Framework框架中的Zend_Mail模块发送邮件...
- ››使用cout标准输出如何控制小数点后位数
- ››使用nofollow标签做SEO的技巧
- ››使用 WebSphere Message Broker 的 WebSphere Tra...
- ››使用SQL Server事件探查器做应用程序的性能分析
- ››使用SQL Server事件探查器分析死锁原因
- ››实现基于OPhone 2.0的GTalk客户端
- ››实现可编辑下拉框的ComboBox asp.net控件方法
- ››实现AjaxPro的方法
- ››使用纯文本文件打造WCF服务
更多精彩
赞助商链接