プロが教える店舗&オフィスのセキュリティ対策術

みなさん、こんにちは。

現在、画面キャプチャを作製中ですが、
キャプチャのタイミングがわからず困っています。

アプリケーションのとあるウィンドウクラスで、同アプリケーションの他のウィンドウの WM_PAINT ハンドラーの完了を知ることは可能でしょうか?

もしくは、他のウィンドウの更新の完了を知りたい、という表現の方がわかりやすいでしょうか?

よろしくお願いします。

A 回答 (3件)

>コード上での描画完了と物理的な描画完了との不一致を懸念しての質問でした。


>つまり、キャプチャのタイミングを物理的な描画完了の「直後」にしたい、ということです。

おそらくメッセージ処理後であれば、キャプチャはできるかと。ビデオカードのRAMには書き込まれてると思われるので。
VNCというソフトは、WM_PAINTをみて画面イメージの変更を判断しています。

というか、WM_PAINT以外での描画ってまったく考慮しないんですか?


>.cpp も .h も「無い」という状況ですが、「サブクラス化」は可能でしょうか?
>判っているのは、ウィンドウのハンドルくらいです。

サブクラス化が何か少しは自分で調べましょうね。
要はウィンドウプロシージャの横取りです。ウィンドウハンドルさえわかれば、エディットボックスなどのシステムが提供しているコントロールであっても、自プロセス内であればどんなウィンドウであってもサブクラス化はできます。

この回答への補足

ありがとうございました。

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

補足日時:2005/05/23 17:08
    • good
    • 0

>EndPaint の直後は、既に描画が完了している、


>という理解でよろしいでしょうか?
>遅延はないのでしょうか?

というか、WM_PAINT応答時で、描画終了時に呼ぶ必要があるAPIですよね。


>現在対象としているのは、自分で作ったウィンドウではないのですが、なんとかならないでしょうか?

サブクラス化して、CallWindowProcを呼び出して制御が返ってきたときで平気かと。

この回答への補足

またまた、説明が不十分のようでした。
重ね重ねスミマセン。

> というか、WM_PAINT応答時で、描画終了時に呼ぶ必要があるAPIですよね。

コード上での描画完了と物理的な描画完了との不一致を懸念しての質問でした。
つまり、キャプチャのタイミングを物理的な描画完了の「直後」にしたい、ということです。

> サブクラス化して、CallWindowProcを呼び出して制御が返ってきたときで平気かと。

.cpp も .h も「無い」という状況ですが、「サブクラス化」は可能でしょうか?判っているのは、ウィンドウのハンドルくらいです。

補足日時:2005/05/16 15:08
    • good
    • 0

単純にEndPaint呼んだ後でフラグを立てるとかするだけとかなんでは?


自分で作ったウィンドウなんでしょ?

この回答への補足

コメント、ありがとうございます。

説明が不正確であったかもしれません。
再度の質問で恐縮ですが、

【Q1】
EndPaint の直後は、既に描画が完了している、
という理解でよろしいでしょうか?
遅延はないのでしょうか?

【Q2】
現在対象としているのは、自分で作ったウィンドウではないのですが、なんとかならないでしょうか?

どうぞよろしくお願いします。

補足日時:2005/05/14 23:43
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!