将 ListBox 复制到剪贴板,返回载体未保存
Posted
技术标签:
【中文标题】将 ListBox 复制到剪贴板,返回载体未保存【英文标题】:Copy ListBox to Clipboard, return carrier not conserved 【发布时间】:2013-11-11 15:43:06 【问题描述】:在使用 MFC 的 C++ 应用程序中,我希望能够将整个 CListBox 内容复制到剪贴板。
我发现了一个复制内容的功能,但是返回的载体没有保存。 我用 HexEditor 看,它似乎是 $0A 而不是 $0D&$0A。
这是我的代码:
CListBox * myListBox = (CListBox *)GetDlgItem(IDC_LIST_RESULT);
CString sContents = _T("");
CString temp = _T("");
int NumberOfSelections = 0;
NumberOfSelections = myListBox->GetCount();
for(int Selection = 0; Selection <= NumberOfSelections-1; Selection++)
myListBox->GetText(Selection, temp);
sContents += temp;
sContents +="\n";
if (OpenClipboard())
HGLOBAL clipbuffer;
char * buffer;
if (EmptyClipboard())
clipbuffer = GlobalAlloc(GMEM_DDESHARE, sContents.GetLength() + 1);
buffer = (char*)GlobalLock(clipbuffer);
CStringA ansiString(sContents);
size_t cbString = strlen(ansiString) + 1;
strcpy_s(buffer, cbString, ansiString);
GlobalUnlock(clipbuffer);
if (SetClipboardData(CF_TEXT, clipbuffer) == NULL)
CString msg;
msg.Format(_T("Unable to set Clipboard data, error: %d"), GetLastError());
AfxMessageBox(msg);
else
AfxMessageBox(_T("Successfully copied selected laps to clipboard"));
else
AfxMessageBox(_T("Unable to empty Clipboard"));
CloseClipboard();
else
AfxMessageBox(_T("Unable to open Clipboard"));
// TODO: ajoutez ici le code de votre gestionnaire de notification de contrôle
我在 Visual Studio 2013 中使用 unicode 配置。
有人有什么想法吗?
非常感谢,
最好的问候,
尼克斯
【问题讨论】:
【参考方案1】:只有一个\n
,因为这是您在剪贴板中输入的内容。
sContents +="\n";
应该是
sContents +="\r\n";
【讨论】:
以上是关于将 ListBox 复制到剪贴板,返回载体未保存的主要内容,如果未能解决你的问题,请参考以下文章