プロが教える店舗&オフィスのセキュリティ対策術

VC++2010のエディットボックスの出力について質問させていただきました。


シリアル通信でデータを毎秒受信するプログラムを作成しており、

9_27_23.4_33.00

というデータを受信して エディットボックスに表示しているんですが
9_27_23.4_33.00
9_27_23.4_33.00
9_27_23.4_33.00




という表示を期待しているんですが
改行されず上書きされてしまいます

CString szRecvの中に受信データが格納されており
szRecv = szRecv +"\r\n"を記述しても
改行されませんでした。

どのようにしたら うまく 改行されて表示されるのか よろしくお願いします

A 回答 (4件)

CStringが使われているということから、MFCを使っているということでよいでしょうか。



ダイアログクラスの中でどのようにエディットボックスに反映していますか?
MFCでは大きく分けて、DDXによる方法と、直接GetWindowText()/SetWindowText()を使う方法があります。DDXの場合は

UpdateData(TRUE);

でデータを画面からDDX変数(例えばCString型メンバ変数 m_history)に取得し、変数を

m_history = m_history +"\r\n" + szRecv;

のように更新した上で、

UpdateData(FALSE);

を呼び出してDDX変数の内容を画面コントロールに反映させます。

DDXを使わない方法では、エディットコントロール(例えばCEdit型メンバ変数 m_edit)に対して

CString history;
m_edit.GetWindowText(history);
history = history +"\r\n" + szRecv;
m_edit.SetWindowText(history);

とします。

ただし、単に履歴の表示のみで編集する必要がないのであれば、redfox63さんがおっしゃるようにリストボックスやリストビューなどを使用するのが良いです。
    • good
    • 0

受信したデータの 編集が必要なのでしょうか?



必要がないのであれば データを表示するコントロールを ListBoxにしてしまうという選択肢もありますが …
    • good
    • 0

szRecv = szRecv +"\r\n" + "9_27_23.4_33.00"



としてみては?
    • good
    • 0

エディットボックス



のプロパティーの
Multiline

は TRUE

になっていますか?

この回答への補足

はい、TRUEになってましたけど 

改行されませんでした

補足日時:2013/01/29 13:17
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!