2012-02-14 8 views
0

大きな高さ(画面サイズより大きい)のコントロールのBitBlt()スクリーンショットを取得したいと思いますが、対応する非常に高いウィンドウを使用したくありません。私はこのコントロールのハンドルでBitBlt()のほとんどをウィンドウの境界の外側で試してみましたが、ウィンドウ内にある領域だけがキャプチャされました。ウィンドウの外の領域は黒としてキャプチャされます。私はBitBlt()のスクリーンショットをアプリウィンドウ範囲外の(より大きい)コントロールにすることはできますか?

これを修正する方法はありますか?例えば。それがここでの主な問題である場合、コントロールは完全に(そしてウィンドウに表示されているパーツだけでなく)自分自身を描画するように強制できますか?

答えて

1

コントロールは、ウィンドウのhdcに描画され、画面にクリップされます。ウィンドウが重なってもクリップされます。独自の(ビットマップ)hdcを使ってコントロールに再描画メッセージを送信してみることもできます。これは、コントロールの実装方法に応じて機能します。

+0

標準の再描画メッセージであるWM_PAINTにはhdcが含まれていないため、これは非スターターです。 WM_PRINTは機能するかもしれませんが、サポートは不安定です。 – arx

+1

WM_PRINTが機能しない場合は、ウィンドウ内のコントロールを移動して複数のスクリーンショットを取得することができます。 – rasmus

関連する問題