如何使用C和WinAPI将包含特殊字符的文本复制到剪贴板?

时间:2015-04-09 12:45:50

标签: c windows winapi

我正在尝试制作将文本​​复制到剪贴板的小程序。我在这个网站上发现了这个问题。程序代码:

const char* output = "Test";
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();

此程序会将文本复制到剪贴板。但我需要它复制2行。所以我试试这个:

const char* output = "Test1\nTest2";

但它被复制为文字。我如何修复此代码,结果将是:

Test1
Test2

而不是:

Test1\nTest2

1 个答案:

答案 0 :(得分:2)

Standard Clipboard Formats的页面说明CF_TEXT

  

文字格式。 每行以回车/换行(CR-LF)结束   组合即可。空字符表示数据的结尾。用这个   ANSI文本的格式。

所以你可能需要:

const char* output = "Test1\r\nTest2";
                           ^^