15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


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

Компилятор: 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();