1

私は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

前述の新しい行なし。

それはなぜですか?

4

2 に答える 2

2

完全を期すために、私のコメントを回答として投稿します(正しいことがわかったので...):

異なるオペレーティング システムでは、異なる文字の組み合わせが改行と見なされます。たとえば、 *nixes は\n、コードのように単一の を使用します。一方、Windows はこの\r\n組み合わせを使用します。したがって、文字列のシングル\nは改行マーカーと見なすには十分ではありません。を使用\r\nするとうまくいきます。

于 2012-06-22T15:15:52.943 に答える
1

エラン そうですね。

VB側で修正するには、これを試してください

 Dim s2 As String = s.Replace(vbLf, vbCrLf) 
 f1.TextBox1.AppendText(s2) 

EDIT Sideshow Bob はこれをコンパイルしてテストしました。

于 2012-06-23T10:48:18.600 に答える