|
カテゴリ:カテゴリ未分類
先日Aero関係を調べていてMSDNの面白い資料がありました。 その資料では、リボンのようにタイトルーバーにボタン等を配置する方法がかかれておりなかなか興味ぶかい内容でした。 リボンインタフェースを始めてみたときに、お~!と思うのはタイトルバーにはみ出たでっかいアイコンと操作ボタンですよね。 それからずーとどうやってやっているのだろうと思ってました。 拙い英語力で理解したのは、DWMがフレームを描画したあとでウィンドウマネージャ側のフレームを外してウィンドウサイズをDWMのフレームサイズにウィンドウサイズを変更するということらしいです。 結構荒業な感じですがこうするとウィンドウ全体がクライアント領域として描画可能になるということらしいです。 あとは、この重なった部分のシステム系イベント回りを自力でケアするということらしいです。 そのための、APIが幾つか用意されているところをみるとたまたまこうなったのではなく最初からRibonインタフェース等で使うために意図的に設計されているのですね。 と、ここまで書いて拙作のAeroの調べでDWM側のフレームを外してみると、 え! ちゃんとウィンドウマネージャのフレームが付いてるじゃん???? ん~。また新たな謎が。。。。 追記: もう一度資料を確認してみると、WM_CREATEで RECT rcClient; としているだけで、スタイルビットをいじっているわけでないようです。 で、 だますわけですね。あとはHITTESTを自力で行う。 とこんな段取りのようです。 この資料は、こちらで見れます。 お気に入りの記事を「いいね!」で応援しよう
Last updated
2009.10.27 05:12:28
コメント(0) | コメントを書く |