掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
右クリックメニューを閉じた後の背景処理 (ID:66987)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
焼蛤さん 副スレッドで行っている描画処理というのは、 どんな手法で、どこに対して描画処理をしてるのでしょうか? また、再描画されないというのは A「メニューを表示する前に表示されていたものが、メニューを閉じたあとに消えている」 B「メニューを表示中にも描画作業は続けていて、 メニューの下に描画することもある。その下に描画したはずのものが メニューを閉じても更新されていなかった。」 どっちでしょうか? 別スレッドから、表示ウィンドウのDCに直接書くという実験してみたんですが、 前者Aは起こらず、後者Bは起きました。 さらに、Bの場合は、メニュー閉じたあとにWM_PAINTが通知されました。 どうやら、メニューが表示されてる間は、メニューの下には描画できず メニューを閉じた後にやってね・・とWM_PAINTが発生してるようです。 #メニュー表示中に、別の場所に描画成功してる場合は、メニューを閉じてもWM_PAINTは起きない 対策としては、何度もいわれてる通り「描画内容を記憶しておく」しかないかと。 「裏画面」「ダブルバッファ」とかって言われる手法がお勧め。 概略 1:最初に表示画面とは別に、メモリ上に別の描画領域を作成しておく 2:副スレッドはコッチに描画する。 3:描画したら、表示ウィンドウに対し、再描画するように通知。 4:表示ウィンドウは、再描画通知がきたら別領域から表示領域に必要分コピーする。必要分がわからなければ全部 5:メニューにしろなんにしろ、表示領域が再描画通知うけたら4番の処理する こうすれば、メニュー表示からは影響うけない描画領域に 描画したものをまるまる記憶しておくことができますし、 描画処理のための座標とかそんなこまっちくれぇことも記憶させなくてすみます。 当然、再計算もいりません。 #ちらつきを抑える方法として有名な手段です。 #イマドキのPCなら、毎回、画面全体をコピーするとしても、 #そのことで遅延表示されることはまずない。 >maruさんへ ゲームなんかは、描画スレッドが別なこと多いですよ。 とくにオンラインゲームやアクションゲーム ユーザの行動とはまったく別に時間でどんどん描画しつづけますし かといってユーザの行動の結果もどんどん受け入れる必要ありますから
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.