Mengapa jendela ini memiliki sudut persegi?

24

Pada Windows 7 dengan tema Aero, jendela Preferensi Notepad ++ memiliki sudut persegi, tidak ada ikon menu sistem, tombol tutup, dan 1pxbatas yang lebih gelap . Jendela ini juga memiliki AlwaysOnTopatribut.

notepad ++
(Saya mengubah ukuran jendela agar sesuai dengan lebar 640px.)

Cukup menarik, Anda dapat menyalin gaya ini ke windows lain menggunakan AutoHotkey . Jadi, tampaknya tidak ada trik kotor yang terlibat. Namun, saya tidak berpikir saya telah melihat gaya jendela ini di tempat lain.

Apakah menggunakan gaya ini dikutuk oleh Microsoft? Apakah jenis jendela ini memiliki nama?


Untuk yang penasaran: Normal vs "Square"

normal   Kalkulator

iglvzx
sumber
Saya pikir (tapi saya tidak yakin) bahwa .NET framework akan memberikan bingkai dengan sudut yang dibulatkan secara default, dan tidak ada yang benar-benar ingin mengubahnya.
soando
Karena Apple memiliki hak paten di sudut-sudut bulat.
Chloe

Jawaban:

37

Ini disebut Jendela Alat (bilah) . Setiap jendela yang memiliki WS_EX_TOOLWINDOWgaya ekstensi akan dirender tanpa menu sistem atau kotak diperkecil / maksimalkan, dan bilah judul kecil. Di Windows XP dan yang lebih tinggi (tema dukungan), jendela alat biasanya dirender tanpa sudut membulat (setidaknya dengan tema default).

Gaya ini biasanya digunakan untuk bilah alat (Gambar 1). Anda dapat melihatnya dengan menyeret bilah alat dari program yang memungkinkan Anda mengatur ulang bilah alat. Perhatikan bahwa itu menjadi jendela yang terlihat seperti yang dimaksud. Windows Explorer juga menggunakannya untuk deskbands (Gambar 2) yang pada dasarnya adalah hal yang sama. Anda dapat melihatnya dengan menyeret folder ke salah satu tepi layar, lalu seret bilah alat / deskband yang dihasilkan ke desktop.

Jelas beberapa program menggunakan gaya untuk tujuan lain, seringkali sebagai cara untuk membuat semacam modal, dialog sementara yang merupakan anak dari program utama.

Catatan: ini memiliki beberapa efek (dua yang pertama biasanya merupakan alasan untuk penggunaannya yang tidak standar):

  • Jendela / dialog dengan gaya ini tidak mendapatkan tombol di taskbar
  • Ini mencegah Alt+ Tabbing ke dialog
  • Itu juga mencegah Alt+ PrtScrdari hanya menangkap dialog; seluruh jendela program induk ditangkap.

Gambar 1: Jendela toolbar MSPaint

masukkan deskripsi gambar di sini

Gambar 2: Deskband Windows Explorer

masukkan deskripsi gambar di sini

Synetech
sumber
Aha! Itu masuk akal. :)
iglvzx
Alt+ PrintScreenmenangkap hanya dialog di Windows 7 dengan dialog Notepad ++ Preferences.
Bob
17

Ini merinci nama gaya jendela ini dan opsi yang tersedia di .NET; lihat @ Synetech jawaban yang sangat baik untuk tujuan asli gaya jendela ini, alasannya dapat digunakan untuk kotak dialog tersebut dan implementasi dalam program Windows yang tidak dikelola seperti Notepad ++.


Jendela memiliki sudut persegi dan terlihat seperti itu karena salah satu desainer / programmer Notepad ++ memutuskan untuk menggunakan gaya jendela tertentu. Synetech merinci keuntungan dari gaya jendela itu.

Di .NET / Visual Studio, ini diatur di FormBorderStyleproperti System.Windows.Forms.Formkelas. Secara khusus, itu adalah FixedToolWindow. Nilai yang mungkin ada dalam System.Windows.Forms.FormBorderStyleenumerasi.

The ToolWindows di NET dengan semua pekerjaan nilai default sedikit yang berbeda dari biasa WS_EX_TOOLWINDOWdalam Windows API, walaupun mereka terlihat sama. Dengan pengujian, saya telah menentukan bahwa mereka tidak muncul di taskbar dan mereka tidak muncul di Alt+ Tabtugas switcher kecuali properti bentuk ShowInTaskbardiatur ke false. ShowInTaskbarmemengaruhi visibilitas di bilah tugas dan Alt+ Tabuntuk ToolWindows, tetapi hanya bilah tugas untuk orang lain.

Sementara itu, dimungkinkan juga untuk menghapus ikon / perkecil / kembalikan / maksimalkan tombol dari gaya jendela yang lebih umum, meskipun sepertinya tidak mungkin untuk menambahkannya ke ToolWindows. Dimungkinkan juga untuk menyembunyikan windows normal dari taskbar.

Satu-satunya WS_EX_TOOLWINDOWpenawaran keunggulan fungsional , sejauh yang saya tahu, adalah bahwa jendela tidak muncul di Alt+ Tab.


Saya telah menyertakan beberapa tangkapan layar yang membandingkan gaya jendela .NET. Ini tidak langsung digunakan oleh Notepad ++, atau program unmanaged lain, tetapi yang dinamai oleh Microsoft, jadi ...

Nilai yang mungkin dari FormBorderStyle:

Gambar pertama adalah tangkapan layar dari program yang berjalan dengan Aero diaktifkan, yang kedua adalah dari tampilan desainer Visual Studio (no Aero).
Klik gambar untuk versi ukuran penuh.
Deskripsi diambil dari artikel MSDN pada FormBorderStyleenumerasi.

  • None

    Tidak ada batasan.

Screenshot_Aero Screenshot_NonAero

  • FixedSingle

    Batas garis tunggal yang diperbaiki.

Screenshot_Aero Screenshot_NonAero

  • Fixed3D

    Batas tiga dimensi yang tetap.

Screenshot_Aero Screenshot_NonAero

  • FixedDialog

    Batas tebal gaya dialog yang tetap.

Screenshot_Aero Screenshot_NonAero

  • Sizable (default)

    Perbatasan resizable.

Screenshot_Aero Screenshot_NonAero

  • FixedToolWindow

    Perbatasan jendela alat yang tidak dapat diubah ukurannya. Jendela alat tidak muncul di bilah tugas atau di jendela yang muncul ketika pengguna menekan ALT+ TAB. Meskipun formulir yang menentukan FixedToolWindowbiasanya tidak ditampilkan di bilah tugas, Anda juga harus memastikan bahwa ShowInTaskbarproperti diatur ke false, karena nilai defaultnya adalah true.

Screenshot_Aero Screenshot_NonAero

  • SizableToolWindow

    Batas jendela alat resizable. Jendela alat tidak muncul di bilah tugas atau di jendela yang muncul ketika pengguna menekan ALT+ TAB.

Screenshot_Aero Screenshot_NonAero

Bob
sumber
Ya! bahwa apa yang kita bicarakan.
avirk
Itu tidak ada hubungannya dengan dikelola / tidak dikelola atau kode asli / .NET. Ini hanyalah masalah bagaimana Windows gaya windows dengan WS_EX_TOOLWINDOWgaya. NET hanya alias FixedToolWindowuntuk WS_EX_TOOLWINDOWdan SizableToolWindowuntuk WS_EX_TOOLWINDOW|WS_THICKFRAME. Jangan tersinggung, tetapi jawaban ini tidak benar-benar menjawab pertanyaan atau menjelaskan perilaku yang ditanyakan, itu hanyalah daftar / sumber daya dari berbagai gaya jendela yang digunakan dalam .NET.
Synetech
@ Synetech Saya sadar tidak ada hubungannya dengan apakah kode dikelola atau tidak, saya hanya berpikir saya akan memberikan nama. Penggunaan NET dan opsi lain yang tersedia, dengan screenshot dari perbedaan. Does this type of window have a name?Itu menjawab sebanyak itu, setidaknya dari perspektif .NET programmer. Dan penjelasannya? Karena programmer merasa suka menggunakannya. Anda telah mencantumkan efek yang mungkin diinginkan. Itu saja. Apakah itu direkomendasikan atau dikutuk oleh MS, saya tidak tahu. Secara pribadi, saya pikir Anda telah melakukan pekerjaan yang mengagumkan dalam menjelaskannya.
Bob
Untuk itulah pengeditan.
Synetech
Apa itu @Synetech?
Bob