• 締切済み

WM_PAINT 処理が完了したタイミングを知りたいのですが

みなさん、こんにちは。 現在、画面キャプチャを作製中ですが、 キャプチャのタイミングがわからず困っています。 アプリケーションのとあるウィンドウクラスで、同アプリケーションの他のウィンドウの WM_PAINT ハンドラーの完了を知ることは可能でしょうか? もしくは、他のウィンドウの更新の完了を知りたい、という表現の方がわかりやすいでしょうか? よろしくお願いします。

みんなの回答

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

>コード上での描画完了と物理的な描画完了との不一致を懸念しての質問でした。 >つまり、キャプチャのタイミングを物理的な描画完了の「直後」にしたい、ということです。 おそらくメッセージ処理後であれば、キャプチャはできるかと。ビデオカードのRAMには書き込まれてると思われるので。 VNCというソフトは、WM_PAINTをみて画面イメージの変更を判断しています。 というか、WM_PAINT以外での描画ってまったく考慮しないんですか? >.cpp も .h も「無い」という状況ですが、「サブクラス化」は可能でしょうか? >判っているのは、ウィンドウのハンドルくらいです。 サブクラス化が何か少しは自分で調べましょうね。 要はウィンドウプロシージャの横取りです。ウィンドウハンドルさえわかれば、エディットボックスなどのシステムが提供しているコントロールであっても、自プロセス内であればどんなウィンドウであってもサブクラス化はできます。

SQQL
質問者

補足

ありがとうございました。 ご指摘のとおり、「サブクラス化」は調べておりませんでした。ちょっと調べてみます。

すると、全ての回答が全文表示されます。
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>EndPaint の直後は、既に描画が完了している、 >という理解でよろしいでしょうか? >遅延はないのでしょうか? というか、WM_PAINT応答時で、描画終了時に呼ぶ必要があるAPIですよね。 >現在対象としているのは、自分で作ったウィンドウではないのですが、なんとかならないでしょうか? サブクラス化して、CallWindowProcを呼び出して制御が返ってきたときで平気かと。

SQQL
質問者

補足

またまた、説明が不十分のようでした。 重ね重ねスミマセン。 > というか、WM_PAINT応答時で、描画終了時に呼ぶ必要があるAPIですよね。 コード上での描画完了と物理的な描画完了との不一致を懸念しての質問でした。 つまり、キャプチャのタイミングを物理的な描画完了の「直後」にしたい、ということです。 > サブクラス化して、CallWindowProcを呼び出して制御が返ってきたときで平気かと。 .cpp も .h も「無い」という状況ですが、「サブクラス化」は可能でしょうか?判っているのは、ウィンドウのハンドルくらいです。

すると、全ての回答が全文表示されます。
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

単純にEndPaint呼んだ後でフラグを立てるとかするだけとかなんでは? 自分で作ったウィンドウなんでしょ?

SQQL
質問者

補足

コメント、ありがとうございます。 説明が不正確であったかもしれません。 再度の質問で恐縮ですが、 【Q1】 EndPaint の直後は、既に描画が完了している、 という理解でよろしいでしょうか? 遅延はないのでしょうか? 【Q2】 現在対象としているのは、自分で作ったウィンドウではないのですが、なんとかならないでしょうか? どうぞよろしくお願いします。

すると、全ての回答が全文表示されます。

関連するQ&A