システムが画面を再描画したタイミングと、その領域を知るには?

解決


時の探求者  2004-12-15 05:24:18  No: 12309

画面のDCに加算減算をかけることで、ソフトウェアで擬似的に画面の
輝度を変更するプログラムを作っています。
そこで画面が再描画された場合、その領域で再び加減算の処理をして、
常に一定の輝度に保つ処理がどうしても必要になります。

はじめ、システムフックでWM_PAINTメッセージを監視することで可能
だろうと安易に考えていたのですが、これでは更新されたタイミング
わかるものの、その領域まではわかりません。
なにか良い案はないでしょうか。


jok  2004-12-15 07:55:20  No: 12310

> システムフックでWM_PAINTメッセージを監視することで

本来のウィンドウ関数が BeginPaint() を呼ぶ前なら GetUpdateRect() で
更新領域が取れるかも知れませんね。処理は、WM_PAINT メッセージの処理が
元関数で終わった後にしなければなりませんが。


時の探求者  2004-12-15 08:45:49  No: 12311

jokさん、ありがとうございます。
おっしゃるとおりです。BeginPaintが呼ばれるのを
事前に知ることができれば大変助かるんですが…。
まさかGetUpdateRectを全ウィンドウに常に送ると
いう訳にもいかないでしょうし。弱りました。


jok  2004-12-15 08:58:16  No: 12312

あれれー WH_GETMESSAGE フックなら、元関数に渡されるまえにフックできますけど。


時の探求者  2004-12-15 09:37:07  No: 12313

jokさん、ありがとうございます。
実は今回はじめてSフックを使ったもので
WH_GETMESSAGEをよく知りませんでした。
(WH_CALLWNDPROCでやってました)
今調べて「あ!」となった次第です。
お恥ずかしい限りですね。

ともかく、これでできそうです。
ありがとうございました!


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加