AeroをテーマにしたWindows7では、Notepad ++のPreferencesウィンドウには四角い角があり、システムメニューアイコンがなく、閉じるボタンがあり、1px
が暗くなります。境界。このウィンドウには、AlwaysOnTop
属性もあります。
(ウィンドウのサイズを640px
の幅に合わせて変更しました。)
興味深いことに、 AutoHotkey を使用して、このスタイルを他のウィンドウにコピーできます。したがって、汚いトリックは含まれていないように思われます。しかし、私はこのウィンドウスタイルを他のどこにも見たことがないと思います。
このスタイルの使用はMicrosoftによって非難されていますか?このタイプのウィンドウには名前がありますか?
好奇心旺盛な方へ:ノーマルvs「スクエア」
これはTool(bar)Windowと呼ばれます。 WS_EX_TOOLWINDOW
拡張スタイルは、システムメニューまたは最小化/最大化ボックス、および小さなタイトルバーなしでレンダリングされます。 Windows XP以上(テーマをサポート))では、ツールウィンドウは通常、角を丸くせずにレンダリングされます(少なくともデフォルトのテーマでは)。
このスタイルは通常、ツールバーに使用されます(図1)。ツールバーを再配置できるプログラムからツールバーをドラッグすると、それを確認できます。問題のウィンドウのようなウィンドウになることに注意してください。 Windowsエクスプローラーは、基本的に同じものであるデスクバンド(図2)にも使用します。これらは、フォルダを画面の端の1つにドラッグしてから、結果のツールバー/デスクトップをデスクトップにドラッグすることで確認できます。
明らかに、一部のプログラムは他の目的でスタイルを使用します。多くの場合、メインプログラムの子である一種のモーダルで一時的なダイアログを作成する方法として使用されます。
注:これにはいくつかの影響があります(最初の2つは通常、非標準の使用法の理由です):
図1:MSPaintツールバーウィンドウ
図2:Windowsエクスプローラーデスクバンド
これは、このウィンドウスタイルの名前と.NETで使用可能なオプションの詳細です。このウィンドウスタイルの本来の目的、このようなダイアログボックスに使用される理由、およびNotepad ++などの管理されていないWindowsプログラムでの実装については、@ Synetechの優れた回答を参照してください。
Notepad ++の設計者/プログラマーの1人が特定のウィンドウスタイルを使用することを決定したため、ウィンドウには四角い角があり、そのように見えます。 Synetechは、そのウィンドウスタイルの利点について詳しく説明しています。
.NET/Visual Studioでは、これはSystem.Windows.Forms.Form
クラスの FormBorderStyle
プロパティで設定されます。具体的には、FixedToolWindow
です。可能な値は System.Windows.Forms.FormBorderStyle
列挙型にあります。
すべての値がデフォルトの.NETのToolWindow
sは、同じように見えますが、WindowsAPIのプレーンなWS_EX_TOOLWINDOW
とは少し異なります。テストの結果、タスクバーにdoが表示され、doであることがわかりました。 -)に表示されます Alt+Tab フォームプロパティShowInTaskbar
がfalse
に設定されていない限り、タスクスイッチャー。 ShowInTaskbar
は、タスクバーとタスクバーの両方の可視性に影響します Alt+TabToolWindow
sの場合。ただし、他の場合はタスクバーのみ。
一方、アイコン/最小化/復元/最大化ボタンをより一般的なウィンドウスタイルから削除することもできますが、ToolWindow
sに追加することはできないようです。タスクバーから通常のウィンドウを非表示にすることもできます。
WS_EX_TOOLWINDOW
が提供する唯一の機能上の利点は、私が知る限り、ウィンドウがに表示されないことです。 Alt+Tab。
.NETウィンドウスタイルを比較するスクリーンショットをいくつか含めました。これらはNotepad ++やその他の管理されていないプログラムによって直接使用されることはありませんが、はMicrosoftによって名前が付けられているため...
FormBorderStyle
の可能な値:
最初の画像はAeroが有効になっている実行中のプログラムのスクリーンショットで、2番目の画像はVisual Studioデザイナービュー(Aeroなし)からのものです。
フルサイズバージョンの画像をクリックしてください
説明は、FormBorderStyle
列挙の MSDN記事 から取得されます。
None
国境がない。
FixedSingle
固定された単一行の境界線。
Fixed3D
固定された3次元の境界線。
FixedDialog
太くて固定されたダイアログスタイルの境界線。
Sizable
(デフォルト)
サイズ変更可能な境界線。
FixedToolWindow
サイズ変更できないツールウィンドウの境界線。ツールウィンドウは、タスクバーまたはユーザーがを押したときに表示されるウィンドウには表示されません。 ALT+TAB。通常、
FixedToolWindow
を指定するフォームはタスクバーに表示されませんが、デフォルト値はShowInTaskbar
であるため、false
プロパティがtrue
に設定されていることも確認する必要があります。
SizableToolWindow
サイズ変更可能なツールウィンドウの境界線。ツールウィンドウは、タスクバーまたはユーザーがを押したときに表示されるウィンドウには表示されません。 ALT+TAB。