2008-03-31

Vistaのサムネイル機能が面白い

http://msdn2.microsoft.com/en-us/library/aa969541(VS.85).aspx

VistaのDWMを使ったサムネイル機能がとても面白い。試しに使ってみたが、DirectXで描画しているゲームのウインドウに対して使っても、ゲームも自分のウインドウも、一切フレーム落ちしない。しかも、ゲームのウインドウがバックグラウンドになっていても問題は無い。いい時代になったものだ。
気になる制限としては、ウインドウは、どちらもトップレベルでなければならないというものだ。ソースがトップレベルでなければならないというのは分かるが、サムネイルを描画される側も、トップレベルのウインドウでなければならないというのは、すこし貧弱だ。予想するに、DWMのサムネイルの実装は、ウインドウごとのサーフェイスに直接描画しているのかもしれない。
また、Flip3Dのようなことはできない。サムネイルはウインドウのある領域に、直接描画されるからだ。

使い方も、特にサンプルコードを示すまでもないほど簡単だ。まずDwmRegisterThumbnail関数で、ソースとなるウインドウとサムネイルを描画するウインドウを関連付ける。これがすんだならば、DwmUpdateThumbnailProperties関数を呼び出せばよい。この関数は、一回呼び出すだけでよい。次にもう一度呼び出すまで、サムネイルは描画され続ける。サムネイルが必要なくなったら、DwmUnregisterThumbnail関数を呼び出す。

2 comments:

NyaRuRu said...

DWM 環境での拡大鏡 API も面白いですよ.
http://d.hatena.ne.jp/NyaRuRu/20061226/p1

ご参考までに.

hito said...

そんなものも。
ああ、はやく九割方がDWM動かしている時代が来ないかな。