クライアント領域にガラスフレームを拡張するためにウィンドウに設定できる添付プロパティを書き込みました(DwmExtendFrameIntoClientArea
APIを使用)。ほとんどの場合、正常に動作します。今、私は私の窓がボーダレスになりたいので、私は私の窓に次の属性を設定します。 境界線のないWPFウィンドウでVistaガラス効果を有効にします
WindowStyle="None"
ResizeMode="NoResize"
Background="Transparent"
u:WinUtil.EnableGlass="True"
ShowInTaskbar="False"
しかし、これらの属性を持つ
は、ガラスがまったく表示されません:私の窓は、単に透明な背景を持っています。ResizeMode
を
CanResize
に設定すると、ガラスが表示されますが、ウィンドウのサイズを変更できないようにしたいとします。
私は、非クライアントフレームをクライアント領域に拡張することによってガラス効果が得られると考えています:WindowStyle = None
とResizeMode = NoResize
で、クライアントフレームは存在しないので、拡張するものは何もありません。サイズ変更を有効にすると、ウィンドウの周りにフレームが作成されるので、フレームを拡張できます。
は、私は細い境界線、ノータイトルバーを持つウィンドウを作成することが可能であるべきであり、適切なWS_ *ビットを設定することにより、サイズを変更することはできないと思いますが、私は知らないかを正確にもの
は、だから私の質問は以下のとおりです。スタイルビットは、所望の外観と動作を持つように設定または設定解除する必要があります
- ?
- ウィンドウのスタイルビットを初期化するにはどうすればよいですか? Windowクラスには、Windowsフォーム
CreateParams
というプロパティはありません。ハンドルの作成後にこれらのビットを設定しても問題ありませんか? - 質問2の答えになる可能性がある
HwndSource
クラスが見つかりましたが、Win32の専門家でない場合は少し複雑に思えます...私の問題は賢明な解決策ですか?
何かアドバイスは
これは有望です、ありがとうございます。今使用している方法を理解する必要がありますが、それほど悪くはありません; –
これまでのところ、私のウィンドウは必死に黒く残っています... –
OK、得ました...私は 'CompositionTarget .BackgroundColor'を 'Transparent'に、' AllowsTransparency'をtrueに設定します。ありがとう! –