Пример работы с буфером обмена
|
Следующий пример демонстрирует помещение текста в буфер обмена. В данном случае, текстовые данные берутся из списка и преобразуются в разделённый текст. 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(); |