2

これはシステムレベルで制御できることは知っていますが、システム設定を上書きして、自分のアプリケーションに対してのみ特定の外観を持たせたいと思います。これを制御する別のWindowsアプリを見たことがあるので、これを制御するにはWindowsAPI関数が必要だと思います。

(私がこれをすべきでない理由に入る必要はありません)

4

2 に答える 2

2

アプリケーションウィンドウのこれらの外部要素は、まとめてウィンドウ「クローム」と呼ばれ、実際にオペレーティングシステムによってレンダリングされます。Windows APIレベルでは、各ウィンドウインスタンスの特定の側面(たとえば、コントロールボックス、境界線、最小/最大ボタンなどの存在)を制御するためにさまざまなフラグが使用されますが、サイズ変更可能なウィンドウの境界線の幅は、システム設定によって決定されます。均一性を確保するためであり、ウィンドウごとに構成することはできません。

多くの場合、Windows APIを操作することで、.NETによって公開されていないウィンドウのいくつかの側面を制御できます。WindowsAPIのドキュメントを読んで、その下位レベルで何が可能かを判断することは有益です。出発点として、CreateWindowExのドキュメントを読むことをお勧めします。

http://msdn.microsoft.com/en-us/library/ms632680(VS.85).aspx

.NETでは、FormBorderStyleプロパティを変更して、境界線なし、単一ピクセル幅の境界線、およびサイズ変更可能(太い境界線)から選択できます。カスタム処理を行う場合は、.NET境界線スタイルをnoneに設定してから、ウィンドウのクロムを自分でレンダリングする責任を負う必要があります。これには、独自のキャプションバー、最小/最大ボタン、およびウィンドウの境界線のレンダリングが含まれます。これは簡単な作業ではありませんが、多くのアプリがそれを行います。境界線の幅を制御するだけが本当に必要な場合は、長い道のりです。

この記事では、WPFでこのタスクに取り組む方法について説明し、役立つ場合もあります。

WPFのウィンドウクローム

于 2009-08-07T13:23:22.140 に答える
2

アプリケーションにカスタムの外観が必要な場合は、Paint イベントでフォーム自体に描画するか、Resize イベントでコントロール (パネルなど) を移動することにより、フォームをボーダレスにし、すべてを自分で処理します。ドラッグ、サイズ変更、閉じる/最小化などを処理する必要がありますが、特に難しいことはありません。

これは、同様の質問に対する私の回答です。これは、自分で行うための基本を示しています (これは Windows モバイル用ですが、通常の Windows でも機能します)。

于 2009-08-07T13:14:30.467 に答える