ダイアログボックス上のボタンを押すと、エディットボックスに文字がどんどん改行と共に書き込まれていくというプログラムを作っています。
この際に、改行するという事はエディットボックスに複数行を表示させているのですが、新しい行を追加させると常にスクロールバーがエディットボックスの先頭まで戻ってしまい、もどかしい思いをしています。
私の狙いとしては、新しい行を追加すると逆に常にスクロールバーの位置が最下段にくるようにし、常に最新の情報がエディットボックスに表示されているような状態にしたいのですが、どなたか良い方法をご存じないでしょうか?
プログラムはVC++6.0のAPIで書いております。
よろしくお願いいたします。
EM_SETSEL を Send してみてはどうでしょうか?
> エディットボックスに文字がどんどん改行と共に書き込まれていくという
追記ですよね?
> エディットボックスの先頭まで戻ってしまい
ということは、もしかしてすべての文字列を SetWindowText で入れていますか?
追加する文字だけを EM_SETSEL と EM_REPLACESEL で追記したほうがいいかも。
>EM_SETSEL を Send してみてはどうでしょうか?
はだめそうでした。
EM_GETLINECOUNT で総行数を取得して、LINESCROLLでスクロールさせる
をすればできそうです。
訂正)
> LINESCROLLで
EM_LINESCROLLで
Blueさん
書き込みありがとうございました。
EM_LINESCROLLで無事問題解決しました。
ありがとうございました。
SB_BOTTOMを指定してWM_VSCROLLを送ってもたぶん大丈夫。。。
>SB_BOTTOMを指定してWM_VSCROLL
↑EM_SETSELとEM_REPLACESELした上でです。
ツイート | ![]() |