2012-04-26 90 views
2

私はダイアログに単純なCeditコントロールを追加し、OnEnChangeEditコールバックを持っています。私は、ボックスに入力されたテキストを取得しようとしていますが、唯一以下のprintfためにその呼び出しで入力されているものの最初の文字を取得することができます:MFCのCEditとGetwindowText

void MFCDlg::OnEnChangeEdit() { 
    CString s; 
    m_platformSliceOverrideEditBox.GetWindowText(s); 
    _cprintf("%s", s.GetString()); 
} 

それは私はUnicode文字セットを使用しています助けている場合コンパイル。

答えて

2

_cprintfはansi文字列が必要です。ユニコードを使用している場合、2番目のバイトはnullになるため、最初の文字で停止します。

_tcprintfを使用してください。代わりに、ユニコードとしてビルドするとワイド文字列が必要になります。

+0

ありがとうございました!しかし、私はuni-codeを使ってコンパイルしていたときに、どうやって_cprintfを使うことができましたか? std :: stringとchar *を出力するときの_cprintfの動作はすべて問題ありませんでした。 –

+0

std :: stringは1バイトです。ユニコードのためにstd :: wstringが必要です。 – GazTheDestroyer

関連する問題