web-dev-qa-db-ja.com

このウィンドウの角が四角いのはなぜですか?

AeroをテーマにしたWindows7では、Notepad ++のPreferencesウィンドウには四角い角があり、システムメニューアイコンがなく、閉じるボタンがあり、1pxが暗くなります。境界。このウィンドウには、AlwaysOnTop属性もあります。

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

興味深いことに、 AutoHotkey を使用して、このスタイルを他のウィンドウにコピーできます。したがって、汚いトリックは含まれていないように思われます。しかし、私はこのウィンドウスタイルを他のどこにも見たことがないと思います。

このスタイルの使用はMicrosoftによって非難されていますか?このタイプのウィンドウには名前がありますか?


好奇心旺盛な方へ:ノーマルvs「スクエア」

normalcalculator

24
iglvzx

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

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

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

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

  • このスタイルのウィンドウ/ダイアログには、タスクバーにボタンがありません
  • それは防ぎます Alt+Tabダイアログへのビング
  • それはまた防止します Alt+PrtScr ダイアログだけをキャプチャすることから。親プログラムウィンドウ全体がキャプチャされます。

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

enter image description here

図2:Windowsエクスプローラーデスクバンド

enter image description here

37
Synetech

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


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

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

すべての値がデフォルトの.NETのToolWindowsは、同じように見えますが、WindowsAPIのプレーンなWS_EX_TOOLWINDOWとは少し異なります。テストの結果、タスクバーにdoが表示され、doであることがわかりました。 -)に表示されます Alt+Tab フォームプロパティShowInTaskbarfalseに設定されていない限り、タスクスイッチャー。 ShowInTaskbarは、タスクバーとタスクバーの両方の可視性に影響します Alt+TabToolWindowsの場合。ただし、他の場合はタスクバーのみ。

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

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


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

FormBorderStyleの可能な値:

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

  • None

    国境がない。

Screenshot_AeroScreenshot_NonAero

  • FixedSingle

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

Screenshot_AeroScreenshot_NonAero

  • Fixed3D

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

Screenshot_AeroScreenshot_NonAero

  • FixedDialog

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

Screenshot_AeroScreenshot_NonAero

  • Sizable(デフォルト)

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

Screenshot_AeroScreenshot_NonAero

  • FixedToolWindow

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

Screenshot_AeroScreenshot_NonAero

  • SizableToolWindow

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

Screenshot_AeroScreenshot_NonAero

17
Bob