我有一个VB方法
Public Sub append_text(ByVal s As String)
f1.TextBox1.AppendText(s)
End Sub
从 C++ 通过 COM 调用
_bstr_t b(L"test\nnew\nlines\n");
ATLENSURE_SUCCEEDED(t->append_text(b));
但是文本框最终会说
testnewlines
没有上述新行。
那为什么呢?
为了完整起见,发布我的评论作为答案(现在我知道它是正确的......):
不同的操作系统将不同的字符组合视为换行符。例如,*nixes 使用单个\n
,就像在您的代码中一样。另一方面,Windows 使用这种\r\n
组合。因此,\n
您的字符串中的单个不足以被视为新的行标记。使用\r\n
就可以了。
伊兰是对的。
要在 VB 端修复它,试试这个
Dim s2 As String = s.Replace(vbLf, vbCrLf)
f1.TextBox1.AppendText(s2)
编辑Sideshow Bob 对此进行了编译和测试。