Пример работы с буфером обмена.
Компилятор: Visual C++
Следующий пример демонстрирует помещение
текста в буфер обмена. В данном случае, текстовые
данные берутся из списка и преобразуются в
разделённый текст.
CString Message, Text;
int ItemCount, i;
HGLOBAL hGlobal;
Text ="CM\tKey\tName\tValue\r\n";
ItemCount = m_ctlObjectsTable.GetItemCount();
for (i=0; i<ItemCount; ++i) {
Text += m_ctlObjectsTable.GetItemText(i, 0) + '\t';
Text += m_ctlObjectsTable.GetItemText(i, 1) + '\t';
Text += m_ctlObjectsTable.GetItemText(i, 2) + '\t';
Text += m_ctlObjectsTable.GetItemText(i, 3) + "\r\n";
}
if (!OpenClipboard()) {
MessageBox("The clipboard is temporarily unavailable");
return;
}
if (!EmptyClipboard()) {
CloseClipboard();
MessageBox("The clipboard cannot be emptied");
return;
}
hGlobal = GlobalAlloc(GMEM_MOVEABLE, Text.GetLength()+1);
if (!hGlobal) {
CloseClipboard();
GetErrorMessage(GetLastError(), Message);
MessageBox(CString("Memory allocation error: ")+Message);
return;
}
strcpy((char *)GlobalLock(hGlobal), Text);
GlobalUnlock(hGlobal);
if (!SetClipboardData(CF_TEXT, hGlobal)) {
GetErrorMessage(GetLastError(), Message);
MessageBox(CString("Error setting clipboard: ")+Message);
}
CloseClipboard();
|