リッチエディットに複数行の文字列をプログラムから定期的に送って全内容を更新するプログラムを作成しています。
更新中は垂直スクロールバーで任意の行に移動できるようにしています。
コードは下記です。
LRESULT Line = SendMessage( hEdit, EM_GETFIRSTVISIBLELINE, 0, 0 ); // 現在の表示行を控えておく
SendMessage( hEdit, WM_SETREDRAW, FALSE, 0 ); // 文字列更新中の状態が露呈しないよう再描画を抑制する
SetWindowText( hEdit, str ); // 全文字列更新
SendMessage( hEdit, EM_LINESCROLL, 0, -INT_MAX ); // 表示行を一番上に移動する
SendMessage( hEdit, EM_LINESCROLL, 0, Line ); // 表示行を、控えておいた位置に移動する
SendMessage( hEdit, WM_SETREDRAW, TRUE, 0 ); // 再描画再開
InvalidateRect( hEdit, NULL, FALSE ); // 表示を促す
これで、ある程度までの行数の文字列であれば、意図通りの挙動となるのですが、
行数が多くなってくると、動かしていたスクロールバーが一瞬一番下まで下がってから
元の位置に戻るという現象が文字列更新の度に起こります。
ただ、リッチエディット内の表示位置は、動かしていたスクロールバー位置に対応する位置のままで、
スクロールバーが一瞬一番下がる動きとは連動しません。
一体何が起こっており、どのようにすれば回避できそうでしょうか?
Win32API質問箱 Build126
■ このスレッドは過去ログ倉庫に格納されています
680デフォルトの名無しさん
2021/07/15(木) 01:52:58.00ID:0fB1tPL7■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国側が首相答弁の撤回要求、日本側拒否★3 [夜のけいちゃん★]
- 債券・円・株「トリプル安」に…長期金利1.755%まで上昇、円は対ユーロで史上最安値 ★2 [蚤の市★]
- 被爆者は「怒りが腹の底から湧いてくる」高市首相“非核三原則見直し報道”に被爆地で懸念や憤りの声《長崎》 [1ゲットロボ★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★6 [ぐれ★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★7 [BFU★]
- おこめ券 予算約9.5億円のうち約2.4億円が経費(そのうちJAに約1億円支払い) 東京・台東区 [Hitzeschleier★]
