Скопировать ListBox в буфер обмена, возврат носителя не сохраняется

В приложении C ++, использующем MFC, я хотел бы иметь возможность копировать весь контент 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

Я использую конфигурацию Unicode с Visual Studio 2013.

У кого-нибудь есть идеи?

Большое спасибо,

С наилучшими пожеланиями,

Nixeus

0

Решение

Там только \n потому что это то, что вы положили в буфер обмена.

sContents +="\n";

Так должно быть

sContents +="\r\n";
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector