if(OpenClipboard())
{//復制到剪貼板
len = m_quickdata[nHotKeyId-10].lpQuickText.GetLength()+1;
clipbuffer = GlobalAlloc(GHND,len);
buffer = (char *)GlobalLock(clipbuffer);
_tcscpy_s(buffer,len,m_quickdata[nHotKeyId-10].lpQuickText);
GlobalUnlock(clipbuffer);
EmptyClipboard();
SetClipboardData(RegisterClipboardFormat(CF_RTF),clipbuffer);
CloseClipboard();
}
使用這種方法按Ctrl+V的時候可以粘貼到WPS文字中,但是不能粘貼到記事本、QQ中。有什么辦法可以將RTF字串復制到剪貼板中,并且可以粘貼到記事本、QQ這樣的程式中呢?
uj5u.com熱心網友回復:
有一種蠢的方法就是使用RichTextBox讀取RTF字串,然后用RichTextBox復制文本到剪貼板。但是這中方法太不直接了,有沒有直接復制到剪貼板的方法呢?uj5u.com熱心網友回復:
CRichEditCtrl::Copy ?uj5u.com熱心網友回復:
RTF文本都是從檔案中讀取進來的,有多個,保存在記憶體當中。所以,要呼叫richtextbox的copy方法,太不直接,效率方面也不快。有沒有直接讓rtf文本直接復制到剪貼板,并且可以隨意粘貼在其他程式中?
uj5u.com熱心網友回復:
試試 RegisterClipboardFormat(CF_RTF | CF_RETEXTOBJ),uj5u.com熱心網友回復:
還是不行啊CF_RTF 和 CF_RETEXTOBJ都是文本型的 不能進行或運算,RegisterClipboardFormat(CF_RTF)|RegisterClipboardFormat(CF_RETEXTOBJ) 也不行。
uj5u.com熱心網友回復:
好像richtextbox的rtf文本并不支持粘貼到qq、記事本等。但是wps卻可以,不知道wps是如何實作的。
uj5u.com熱心網友回復:
用VS拷貝了一段代碼,用 Clipbrd 看了一下, 好像格式很多uj5u.com熱心網友回復:
MSDN 上有這樣的例子,試試看 COleDataSource
void CMyView::OnEditCopy()
{
// Create an OLE data source on the heap
COleDataSource* pData = new COleDataSource;
// ...
// Get the currently selected data
// ...
// For the appropriate data formats...
pData->CacheData( CF_??, hData );
// ...
// The Clipboard now owns the allocated memory
// and will delete this data object
// when new data is put on the Clipboard
pData->SetClipboard();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/88183.html
標籤:進程/線程/DLL
上一篇:關于多媒體定時器回應函式呼叫中斷
