エデットボックスのスクロールバーを常に最下段にもっていく

解決


トッシ  2006-08-18 11:03:16  No: 62750  IP: 192.*.*.*

ダイアログボックス上のボタンを押すと、エディットボックスに文字がどんどん改行と共に書き込まれていくというプログラムを作っています。
この際に、改行するという事はエディットボックスに複数行を表示させているのですが、新しい行を追加させると常にスクロールバーがエディットボックスの先頭まで戻ってしまい、もどかしい思いをしています。

私の狙いとしては、新しい行を追加すると逆に常にスクロールバーの位置が最下段にくるようにし、常に最新の情報がエディットボックスに表示されているような状態にしたいのですが、どなたか良い方法をご存じないでしょうか?

プログラムはVC++6.0のAPIで書いております。
よろしくお願いいたします。

編集 削除
Blue  2006-08-18 12:02:15  No: 62751  IP: 192.*.*.*

EM_SETSEL を Send してみてはどうでしょうか?


> エディットボックスに文字がどんどん改行と共に書き込まれていくという
追記ですよね?
> エディットボックスの先頭まで戻ってしまい
ということは、もしかしてすべての文字列を SetWindowText で入れていますか?
追加する文字だけを EM_SETSEL と EM_REPLACESEL で追記したほうがいいかも。

編集 削除
Blue  2006-08-18 13:27:51  No: 62752  IP: 192.*.*.*

>EM_SETSEL を Send してみてはどうでしょうか?
はだめそうでした。

EM_GETLINECOUNT で総行数を取得して、LINESCROLLでスクロールさせる

をすればできそうです。

編集 削除
Blue  2006-08-18 13:28:28  No: 62753  IP: 192.*.*.*

訂正)
> LINESCROLLで
EM_LINESCROLLで

編集 削除
トッシ  2006-08-18 13:55:58  No: 62754  IP: 192.*.*.*

Blueさん

書き込みありがとうございました。
EM_LINESCROLLで無事問題解決しました。
ありがとうございました。

編集 削除
subaru  2006-08-18 16:25:30  No: 62755  IP: 192.*.*.*

SB_BOTTOMを指定してWM_VSCROLLを送ってもたぶん大丈夫。。。

編集 削除
subaru  2006-08-18 16:31:15  No: 62756  IP: 192.*.*.*

>SB_BOTTOMを指定してWM_VSCROLL
↑EM_SETSELとEM_REPLACESELした上でです。

編集 削除