画面のDCに加算減算をかけることで、ソフトウェアで擬似的に画面の
輝度を変更するプログラムを作っています。
そこで画面が再描画された場合、その領域で再び加減算の処理をして、
常に一定の輝度に保つ処理がどうしても必要になります。
はじめ、システムフックでWM_PAINTメッセージを監視することで可能
だろうと安易に考えていたのですが、これでは更新されたタイミング
わかるものの、その領域まではわかりません。
なにか良い案はないでしょうか。
> システムフックでWM_PAINTメッセージを監視することで
本来のウィンドウ関数が BeginPaint() を呼ぶ前なら GetUpdateRect() で
更新領域が取れるかも知れませんね。処理は、WM_PAINT メッセージの処理が
元関数で終わった後にしなければなりませんが。
jokさん、ありがとうございます。
おっしゃるとおりです。BeginPaintが呼ばれるのを
事前に知ることができれば大変助かるんですが…。
まさかGetUpdateRectを全ウィンドウに常に送ると
いう訳にもいかないでしょうし。弱りました。
あれれー WH_GETMESSAGE フックなら、元関数に渡されるまえにフックできますけど。
jokさん、ありがとうございます。
実は今回はじめてSフックを使ったもので
WH_GETMESSAGEをよく知りませんでした。
(WH_CALLWNDPROCでやってました)
今調べて「あ!」となった次第です。
お恥ずかしい限りですね。
ともかく、これでできそうです。
ありがとうございました!
ツイート | ![]() |