使用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;
}
更多精彩
赞助商链接