В приложении 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
Там только \n
потому что это то, что вы положили в буфер обмена.
sContents +="\n";
Так должно быть
sContents +="\r\n";
Других решений пока нет …