在使用 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 配置。
有人有什么想法吗?
非常感谢,
此致,
尼克修斯