我想知道如何将char*
缓冲区复制到Windows剪贴板并获得正确/需要的输出,如下所示?
示例:
我有一个char*
缓冲区,将其放入其中:
Text\nText text \ntext
我们希望,当我们将其复制到剪贴板并将其粘贴到文档中时,它最终将像这样:
Text
Text text
text
但是当我尝试复制并粘贴它时,结果如下:
TextText text text
那我该怎么做才能得到想要的结果?
这是我正在使用的功能:
void clipBoard(const char* output)
{
const size_t len = strlen(output) + 1;
HGLOBAL hMem = GlobalAlloc(GMEM_MOVEABLE, len);
memcpy(GlobalLock(hMem), output, len);
GlobalUnlock(hMem);
OpenClipboard(0);
EmptyClipboard();
SetClipboardData(CF_TEXT, hMem);
CloseClipboard();
}
这样称呼:
clipBoard(buffer);
答案 0 :(得分:1)
根据Standard Clipboard Formats文档:
CF_TEXT
1文本格式。 每行以回车/换行(CR-LF)组合结尾。空字符表示数据结束。将此格式用于ANSI文本。
...
CF_UNICODETEXT
13Unicode文本格式。 每行以回车/换行(CR-LF)组合结尾。空字符表示数据结束。
因此,您需要将所有裸LF(\n
)字符替换为CRLF(\r\n
)序列。
Text\r\nText text \r\ntext