Пример работы с буфером обмена

Следующий пример демонстрирует помещение текста в буфер обмена. В данном случае, текстовые данные берутся из списка и преобразуются в разделённый текст.

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();

 

 
« Предыдущая статья   Следующая статья »