掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
リッチエディットの特定箇所の文字にすばやく色をつけたい (ID:69281)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> 1)SetSelで青色に変える文字の範囲確定している瞬間に、キー入力すると本来は > 文字列の最後に入るべき文字が、範囲確定させた所に入ってしまいます。 > 2)SetSelectionが遅いのか、極まれにキー入力と重なるとRuntime エラーが出る。 複数スレッドから m_rich にアクセスしているにも関わらず、スレッド間排他制御を 行っていないため起きている症状と思われる。 > 少し遅れて最初の文字から順に0.5秒毎程度で順次文字色を青色に変えています。 コレどうやって実装している?マルチメディアタイマ(timeSetEvent)使ってる? もしそうなら、timeSetEvent で指定した処理から共有リソースにアクセスしてる場合は 排他制御してやる必要がある。timeSetEvent は独自スレッドで処理を実行するので。 以下マルチメディアタイマを使っているという前提での回答。 > これらの問題を回避する方法をお教えいただければ幸いです。 ・きちんと(メッセージ処理も含め完璧に)排他制御してやる ・マルチメディアタイマを使わずに WM_TIMER を使う 目的が「少し遅れて...順次文字色を青色に変えています」なら、それほど厳密に 「0.5秒毎」を守ってやる必要はなさそうな感じだよね。 具体例を挙げると、「キー入力が激しく為されている場合は、キー入力を優先して 青色変更はキー入力が落ち着いてからでも問題無し」て感じの仕様。 んで、もし↑通りなら WM_TIMER の方が適当だと思われる。 WM_TIMER は優先度が低いメッセージなので忙しい時は発生しない(後回しされる)し、 基本、m_rich が所属するスレッドで処理されるので排他制御も必要ない。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.