現在、Windowsフォームにカスタムフレーム(DevExpress 'SkinManager.EnableFormSkins
functionを使用)を使用してトップレベルのウィンドウを作成しようとしていますが、は、Windows 7 Aeroで動作しているときにウィンドウの周囲に影があります。WM_NCPAINTを使用することができ、まだAeroのウィンドウの陰影を取得できますか?
ウィンドウには、現在次のようになります。
と私はそれが次のようになりたい:(すなわち、ウィンドウの周りに柔らかい影を持っている)
。
私は多くの研究を行なったし、CS_DROPSHADOW
、asking the DevExpress support、reading on SO、other blogsとMSDN documentationの使用を含む、アンドエラーを試してみてください。
まだ、何も私のウィンドウに影をもたらしません。
私の要件は単に達成することができないと思うが、私はまだチャンスを取って、ここで尋ねたい。
(私も...私の実際のウィンドウの背後にあるネイティブエアロ窓を有することにより、これを偽造考えるが、実装するのに失敗した)
私の質問は次のとおりです。
はそれは、ウィンドウを持つことが可能ですカスタム描画された非クライアント(NC)領域を使用し、Aeroがアクティブなときにこのウィンドウの周りに影を残しますか?
これは可能だと思います。wndprocをオーバーライドし、 'if(m.Msg == WM_ACTIVATE)DwmExtendFrameIntoClientArea(this.Handle、ref MARGIN);を入力し、' MARGINには1(0は機能しません)が設定されます。 'Margin MARGIN = {1,1,1,1};' FrameBorderStyleもこれが機能するにはFrameBorderStyle.Sizeableでなければなりません。だからあなたはこれをしなければなりません: 'if(m.Msg == WM_NCCALCSIZE && m.WParam!= IntPtr.Zero){m.Result = IntPtr.Zero;戻る; } 'フレーム枠を削除します。 –