0

MFCで記述されたMDIアプリケーションには、MDIクライアント領域のスクリーンショットをファイルに保存する機能があります。現在、画面からビットマップにBitBltを実行しており、それが保存されます。問題は、一部のMDI子ウィンドウのコンテンツがOpenGLによってレンダリングされ、宛先ビットマップでこれらの領域が空白または文字化けして表示されることです。

私はいくつかの代替案を検討し
ました:-OpenGLコンテンツを直接(glReadPixelsを使用して)抽出し、これを画面ビットマップの関連部分に描画します。
-ALT + PrtScrをシミュレートします。これを手動で行うと、コンテンツが正常に取得されるように見えるためです。ただし、これによりクリップボードのコンテンツが破棄されます。
-DWMを使用してみてください。VistaとWin7からのAppart、これはWin2000とXPでも動作する必要があるので、これはおそらく行く方法ではありません。

任意の入力をいただければ幸いです。

4

2 に答える 2

0

OpenGL ウィンドウからビットマップを取得する最良の方法は、コンテンツをビットマップ「ウィンドウ」に描画することです。これを行う方法の詳細については、 PFD_DRAW_TO_BITMAPを参照してください。

Alt+PrtScr の方法を使用する場合は、多くのユーザーが同じホットキーに反応する独自のプリント スクリーン ツールをインストールしていることを考慮する必要があります。したがって、このホットキーがコンテンツをクリップボードにコピーするかどうかはわかりません。インストールされているプリント スクリーン ツール/ユーティリティのウィンドウが開くだけの場合があります。

于 2010-04-23T19:59:16.637 に答える
0

glReadPixels() アプローチを使用します。この質問は、ここ、gamedev.net フォーラムなどで頻繁に尋ねられるため、Google はコード サンプルを簡単に表示する必要がありますが、glReadPixels() アプローチが一般的に推奨されるアプローチです。

キープレスをシミュレートすることは災害のレシピです。私はそれを避けます。

于 2010-04-26T11:55:16.277 に答える