OrangeMaker

OrangeMaker

PR

×

Keyword Search

▼キーワード検索

Profile

OrangeMaker

OrangeMaker

Calendar

Comments

オールフリーソフトのひろ@ Re:Kokomite Ver.1-0-1-103 リリース(06/10) Kokomiteについて教えてください。 初め…
http://buycialisky.com/@ Re:vs2011 にアップグレード(09/18) cialis split pillcialis comparison difl…
http://buycialisky.com/@ Re:BreathOfWindow Ver.1-0-116 Vectorにて公開(09/05) best price cialiscialis vs viagra pharm…
http://buycialisky.com/@ Re:RieNマルチ化(04/29) cialis preis apothekecialis online ohne…
http://buycialisky.com/@ Re:EatherOverSkypeについて(08/01) side effects of viagra and cialiscialis…

Freepage List

2009.10.23
XML
カテゴリ: カテゴリ未分類

DWM Thumbnailネタをもう一つ。

DWMのThumbnail転送機能はDwmRegisterThumbnail()という関数で転送元のウィンドウと転送先のウィンドウを結びつけますが、MSDNの記載でどちらもトップレベルウィンドウでなければならない旨の記載があります。(実際子ウィンドウを指定すると引数エラーを返します)

転送元は、ともかく転送先は任意だといいのいと思ってしまいます。

なんとなく、Thumnailを行うカスタムウィンドウ(子ウィンドウ)みたいなのを作れない印象を受けます。

しかしながら、あくまでも転送は通常のウィンドウマネージャが作成したウィンドウの上にDWMの描画が合成されることを考えると子ウィンドウから自分の表示している画面上の領域へ転送させることは問題ないということです。ただ指定がトップレベルのウィンドウと座標系がトップレベルのウィンドウのクライアント座標という点です。

実際作ったわけでないですが、こんな感じでできると思います。

1)CWnd等ウィンドウのベースを決めて継承クラスを作成
(継承元はCDialog,CStatic等この辺は必要性とお好みで。。)
2)ウィンドウが生成されたタイミングで自分所属するTOPレベルのウィンドウハンドルを取得
3)自身のウィンドウ位置をTOPレベルのウィンドウのクライアント座標に変換
4)転送先をTOPレベルウィンドウのハンドルでトップレベルウィンドウのクライアント座標で指定
5)ウィンドウの消滅イベントでunregistする。
6)ウィンドウのSHOW、HIDEで転送のON/OFFを切り替えたい場合はWM_SHOWWINDOW(mfcではOnShowWindow())でVisibleを切り替える

と、こんな感じですかね。

DWMの方から見ると、DWMマネージャはトップレベルのウィンドウしか認識していないのだと思います。(子ウィンドウ?それは通常のウインドウマネージャの管轄じゃみたいな。。)






お気に入りの記事を「いいね!」で応援しよう

Last updated  2009.10.24 03:28:47
コメント(0) | コメントを書く


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
X
Mobilize your Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: