MFC を使用する C++ アプリケーションで、CListBox の内容全体をクリップボードにコピーできるようにしたいと考えています。
コンテンツをコピーする関数を見つけましたが、リターン キャリアは保存されません。HexEditor を見ると、$0D&$0A の代わりに $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 構成を使用しています。
誰にもいくつかのアイデアがありますか?
どうもありがとう、
よろしくお願いします、
ニクセウス