Я занимаюсь разработкой программного обеспечения, которое копирует большую строку в буфер обмена Windows для вставки в другое программное обеспечение. Вставка в другое программное обеспечение не работает, и когда я вставляю в Блокнот, новые строки в исходных строках исчезают, поэтому он не может быть вставлен в другое программное обеспечение. Я знаю это, потому что когда я снова добавляю символы новой строки в Блокнот и выполняю Копирование, Вставка затем работает в другой программе. Когда я вставляю в Wordpad, новые строки появляются загадочно.
Я использую SetClipboardData () в C ++ с типом формата буфера обмена CF_TEXT. Я пытался использовать CF_OEMTEXT, CF_DSPTEXT, но ни один из них не работает. Я видел некоторую документацию по CF_SYLK (символическая ссылка) для электронных таблиц, поскольку программное обеспечение, в которое я вставляю, похоже на электронную таблицу, но я также не мог заставить это работать. Ниже мой код для копирования в буфер обмена.
void ClipBoardManager::CopyExcelStringToClipBoard(std::string excel_str)
{
OpenClipboard(nullptr);
EmptyClipboard();
HGLOBAL hg = GlobalAlloc(GMEM_MOVEABLE, excel_str.size() + 1);
if (!hg) {
CloseClipboard();
return;
}
memcpy(GlobalLock(hg), excel_str.c_str(), excel_str.size() + 1);
GlobalUnlock(hg);
SetClipboardData(CF_TEXT, hg);
CloseClipboard();
GlobalFree(hg);
}
Любая помощь приветствуется.