XPとVistaのレイヤーウィンドウの振る舞いの違いについて
- 題名: XPとVistaのレイヤーウィンドウの振る舞いの違いについて
- 著者: まこと
- 日時: 2009/02/16 14:50:29
- ID: 24009
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: XPとVistaのレイヤーウィンドウの振る舞いの違いについて
- 著者: Azulean
- 日時: 2009/02/17 0:00:38
- ID: 24012
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: XPとVistaのレイヤーウィンドウの振る舞いの違いについて
- 著者: まこと
- 日時: 2009/02/17 13:09:56
- ID: 24015
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
何時もお世話になっております、まこと と申します。
以前から開発しております拡大鏡プログラムに絡んで、Windows Vistaにおける
レイヤーウィンドウの振る舞い(?)について教えて頂きたい事が有ります。
現在、自身(拡大画像を表示するフォーム)の背面の画像をキャプチャする為に
WS_EX_LAYEREDフラグをウィンドウの拡張スタイルに追加し、その上で
SetLayeredWindowAttributes(this.Handle, 0, 255, LWA_ALPHA)として不透過
のレイヤーウィンドウを作成しております。
この状態でGetDC(0)→BitBlt(〜, SRCCOPY)とすると、Windows XP上では自身の
ウィンドウがキャプチャされず、背面の画像のみを取得する事が出来ました。
しかしWindows Vista上で実行しますと、BitBltのラスタオペレーションに
CAPTUREBLTを指定していないにも拘らず、レイヤー化された自身の画像を取得
してしまいます。
※キャプチャ位置をズラすと「合わせ鏡」の様に表示されます…
フォームの透過率を100%(透明)として、更にSetLayeredWindowAttributesでは
なく、UpdateLayeredWindowを拡大画像を表示する様にしても、結局自身を
キャプチャしてしまい、背面の画像を取得する事が出来ません。
Vista上で動く拡大鏡ソフトも幾つか存在する為、"技術的に不可能"と言う訳では
ないと思うのですが、どなたかVistaでも通用する背面画像の取得方法をご存じ
ありませんでしょうか?
以上 宜しくお願い致します。