1

m_editText は CEdit (MFC から) 型です。これは、WinXP (32 ビット) の何百人ものユーザーで何年も問題なく機能していましたが、同じ実行可能ファイルが Win7 (64 ビット) にある場合、一部のユーザーは (strText で) 余分な奇妙な (つまり、拡張された、つまりゴミの) 文字がテキストに追加されます。エディット ボックス コントロール (m_editText) に入力したもの。問題を再現できません。GetLine が編集ボックスに入力された文字のみをコピーすることを確認しました (少なくとも私のマシンでは)。

TCHAR atchBuffer[256] = {0};  // initialize to all nulls
int nChrCount = m_editText.GetLine(0, atchBuffer, 255);
CString strText;
if (nChrCount!=0)
    strText = CString(atchBuffer);

これは、WinXP (32 ビット) 上の Visual C++ 6 でコンパイル (デバッグ ビルド) され、MFC 5 は静的にリンクされています。提供された洞察は大歓迎です。

4

1 に答える 1

1

コードを次のように変更します。

if (nChrCount!=0)
    strText = CString(atchBuffer, nChrCount);

ガベージ/初期化されていないデータがCStringに追加されず、コントロールにある文字のみが追加されるようにします。

于 2012-05-20T09:01:20.957 に答える