none
ビジュアルスタイルを維持したままでウィンドウをクリッピングする RRS feed

  • 質問

  • まご ごそらと申します。

    CreateWindowEx等で作成したウィンドウで、
    ビジュアルスタイルを維持した状態でウィンドウのクリッピングを行いたいと思っています。

    具体的には下記のような状況を想定しています。
    Bの領域に存在するウィンドウをAの領域に移動させる際に、
    Aの領域にかさなっている部分を表示しない状況を作り出したいのです。

    (下デスクトップ)
    ┌─────┬──────┐
    │          │            │
    │   A     │     B     │
    │          │            │
    └─────┴──────┘

    SetWindowRgn などを試して見たのですが、
    ウィンドウがビジュアルスタイル?(テーマのスタイル?)ではなく、
    旧スタイルになってしまいます。

    ビジュアルスタイルを維持したままで、
    上記の様なウィンドウのクリッピングを行う事はできないのでしょうか?

    何か良い方法がありましたら、ご教授お願い致します。
    2009年8月6日 0:17

回答

すべての返信

  • http://msdn.microsoft.com/en-us/library/bb773175(VS.85).aspx にありますが、
    SetWindowRgn()を行えば、Visual Styleは適用されません。

    ウィンドウにWS_EX_LAYEREDを指定して透過ウィンドウとして、
    UpdateLayeredWindow() を使って特定の個所のみを透過するようにすればよいと思います。

    詳しくはそれぞれの項目のヘルプを参照ください。
    2009年8月6日 1:46
  • 返信が遅くなりました。

    1.ウィンドウの拡張スタイルに WS_EX_LAYERED を指定する。
    2.UpdateLayerdWindowを使用して不要部分を透過処理する。
    ですね。

    ありがとうございます試して見ます。

    2009年8月6日 10:07
  • こんにちは、フォーラムオペレーターの高橋春樹です。

    Atsushi777さん、ご回答ありがとうございます。

    まご ごそらさんさん、初めまして。
    MSDNフォーラムのご利用ありがとうございます。

    Atsushi777さんからアドバイスを頂いたと思うのですが、試して頂けましたでしょうか。
    実現したい機能は出来ましたか?
    今回Atsuhi777さんからの投稿が有用なものだと思いましたので、
    勝手ながら、回答マークを付けさせて貰いました。
    もし、問題が解決していない場合は、状況を報告して頂きたいと思います。

    今後ともMSDNフォーラムを宜しくお願いたします。


    マイクロソフト株式会社 フォーラム オペレータ 高橋春樹
    2009年8月19日 7:14