なぜこのウィンドウには四角がありますか?


24

Aeroテーマを使用したWindows 7では、Notepad ++の[ 設定]ウィンドウに四角があり、システムメニューアイコンがありません1px。閉じるボタンがあり、境界線が暗いです。このウィンドウにはAlwaysOnTop属性もあります。

notepad ++
(幅を640px。に合わせてウィンドウのサイズを変更しました。)

興味深いことに、このスタイルをAutoHotkeyを使用して他のウィンドウにコピーできます。したがって、関係する汚いトリックはないようです。ただし、このウィンドウスタイルは他のどこでも見たことがありません。

マイクロソフトによって非難されているこのスタイルを使用していますか?このタイプのウィンドウには名前がありますか?


好奇心の強い人:ノーマルvs「スクエア」

普通の   電卓


.NETフレームワークは、デフォルトで角が丸いフレームを提供し、誰もそれを変更する気がしないと思います(しかし確信はありません)。
-soandos

Appleが丸みを帯びた角に特許を持っているからです。
クロエ

回答:


37

Tool(bar)Windowと呼ばれますWS_EX_TOOLWINDOW拡張スタイルを持つウィンドウは、システムメニューまたは最小化/最大化ボックス、および小さなタイトルバーなしでレンダリングされます。(テーマをサポートする)Windows XP以降では、ツールウィンドウは通常、角丸なしでレンダリングされます(少なくともデフォルトのテーマでは)。

このスタイルは通常、ツールバーに使用されます(図1)。ツールバーをドラッグしてプログラムを表示すると、ツールバーを再配置できます。問題のウィンドウのように見えるウィンドウになることに注意してください。Windows Explorerは、基本的に同じものであるデスクバンド(図2)にも使用します。これらを確認するには、フォルダーを画面の端のいずれかにドラッグしてから、結果のツールバー/デスクバンドをデスクトップにドラッグします。

明らかに、一部のプログラムは他の目的でスタイルを使用します。多くの場合、メインプログラムの子である一種のモーダルで一時的なダイアログを作成する方法として使用されます。

注:これにはいくつかの効果があります(最初の2つは通常、非標準的な使用の理由です)。

  • このスタイルのウィンドウ/ダイアログは、タスクバーにボタンを取得しません
  • ダイアログへのAlt+ Tabbingを防ぎます
  • また、Alt+ PrtScrがダイアログのみをキャプチャするのを防ぎます。親プログラムウィンドウ全体がキャプチャされます。

図1: MSPaintツールバーウィンドウ

ここに画像の説明を入力してください

図2: Windows Explorerデスクバンド

ここに画像の説明を入力してください


あぁ!それは理にかなっている。:)
iglvzx

Alt+ PrintScreenWindows 7では、Notepad ++ Preferencesダイアログでダイアログのみをキャプチャします。
ボブ

17

これは、このウィンドウスタイルの名前と.NETで使用可能なオプションの詳細を示しています。このウィンドウスタイルの本来の目的、ダイアログボックスで使用される理由、Notepad ++などのアンマネージWindowsプログラムでの実装については、@ Synetechの優れた回答を参照してください。


Notepad ++の設計者/プログラマーの1人が特定のウィンドウスタイルを使用することを決定したため、ウィンドウには四角があり、そのように見えます。Synetechは、そのウィンドウスタイルの利点について詳しく説明しています。

.NET / Visual Studioでは、これはクラスのFormBorderStyleプロパティで設定されますSystem.Windows.Forms.Form。具体的には、FixedToolWindowです。可能な値はSystem.Windows.Forms.FormBorderStyle列挙にあります。

ToolWindowすべての値がデフォルトの.NET のsはWS_EX_TOOLWINDOW、同じように見えますが、Windows APIのプレーンとは少し異なります。テストでは、私は彼らがすることを決定したタスクバーに表示され、それらがない上に現れるAlt+のTabフォームプロパティがない限り、タスクスイッチャーShowInTaskbarに設定されていますfalseShowInTaskbarタスクバーとの両方で視認性に影響を与えるAlt+ TabするためToolWindowの、他のもののための唯一のタスクバー。

一方、アイコン/最小化/復元/最大化ボタンをより一般的なウィンドウスタイルから削除することもできますが、ToolWindows に追加することはできないようです。タスクバーから通常のウィンドウを非表示にすることもできます。

WS_EX_TOOLWINDOW私が知る限り、唯一の機能的な利点は、ウィンドウがAlt+に表示されないことTabです。


.NETウィンドウスタイルを比較するスクリーンショットをいくつか掲載しました。これらは、Notepad ++やその他のアンマネージプログラムでは直接使用されません、Microsoftによって名前付けられているため、...

可能な値FormBorderStyle

最初の画像はAeroが有効になっている実行中のプログラムのスクリーンショットで、2番目はVisual Studioデザイナービュー(Aeroなし)のものです。
フルサイズバージョンの画像をクリックします。
説明は、列挙に関するMSDNの記事から取得されFormBorderStyleます。

  • None

    境界はない。

Screenshot_Aero Screenshot_NonAero

  • FixedSingle

    固定された単一行の境界線。

Screenshot_Aero Screenshot_NonAero

  • Fixed3D

    固定された3次元の境界線。

Screenshot_Aero Screenshot_NonAero

  • FixedDialog

    太い、固定されたダイアログスタイルの境界線。

Screenshot_Aero Screenshot_NonAero

  • Sizable (デフォルト)

    サイズ変更可能な境界線。

Screenshot_Aero Screenshot_NonAero

  • FixedToolWindow

    サイズ変更できないツールウィンドウの境界線。ツールウィンドウは、タスクバーまたはユーザーがALT+を押したときに表示されるウィンドウに表示されませんTABFixedToolWindow通常、指定するフォームはタスクバーに表示されませんが、デフォルト値がであるため、ShowInTaskbarプロパティがに設定されていることも確認する必要がありfalseますtrue

Screenshot_Aero Screenshot_NonAero

  • SizableToolWindow

    サイズ変更可能なツールウィンドウの境界線。ツールウィンドウは、タスクバーまたはユーザーがALT+を押したときに表示されるウィンドウに表示されませんTAB

Screenshot_Aero Screenshot_NonAero


うん!私たちが話していたこと。
avirk

マネージ/アンマネージコードまたはネイティブ/.NETコードとは関係ありません。Windowsがスタイルでウィンドウをどのようにスタイルするかという問題ですWS_EX_TOOLWINDOW。.NETは、単にエイリアスFixedToolWindowWS_EX_TOOLWINDOWSizableToolWindowしますWS_EX_TOOLWINDOW|WS_THICKFRAME。違反はありませんが、この回答は実際に質問に答えたり、求められている動作を説明したりするものではありません。これは、.NETで使用されるさまざまなウィンドウスタイルのリスト/ リソースです。
Synetech

@Synetechコードが管理されているかどうかとは関係ないことを知っています。違いのスクリーンショットで、.NETが使用する名前と使用可能な他のオプションを与えると思いました。Does this type of window have a name?少なくとも.NETプログラマーの観点からは、それだけの答えが得られます。そして説明?プログラマーがそれを使用したいと思ったからです。おそらく望ましい効果をリストしました。それについてです。それがMSによって推奨されているか非難されているかどうかはわかりません。個人的に、あなたはそれを説明するのに素晴らしい仕事をしたと思います。
ボブ

それが編集の目的です。
Synetech

@Synetechとは何ですか?
ボブ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.