在使用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配置。
任何人都有一些想法?
非常感谢,
致以最诚挚的问候,
Nixeus
答案 0 :(得分:2)
只有\n
,因为这是你放在剪贴板中的内容。
sContents +="\n";
应该是
sContents +="\r\n";