Tại sao cửa sổ này có góc vuông?


24

Trên Windows 7 với chủ đề Aero, cửa sổ Tùy chọn của Notepad ++ có các góc vuông, không có biểu tượng menu hệ thống, nút đóng và 1pxviền tối hơn . Cửa sổ này cũng có một AlwaysOnTopthuộc tính.

notepad ++
(Tôi thay đổi kích thước cửa sổ để vừa với chiều rộng 640px.)

Thật thú vị, bạn có thể sao chép phong cách này sang các cửa sổ khác bằng AutoHotkey . Vì vậy, dường như không có thủ đoạn bẩn liên quan. Tuy nhiên, tôi không nghĩ rằng tôi đã thấy kiểu cửa sổ này ở bất cứ nơi nào khác.

Là sử dụng phong cách này bị lên án bởi Microsoft? Loại cửa sổ này có tên không?


Dành cho người tò mò: Bình thường vs "Quảng trường"

bình thường   máy tính


Tôi nghĩ (nhưng không chắc chắn) rằng .NET framework sẽ cung cấp một khung có các góc được làm tròn theo mặc định và không ai thực sự cảm thấy muốn thay đổi nó.
soandos

Bởi vì Apple có bằng sáng chế về các góc tròn.
Chloe

Câu trả lời:


37

Nó được gọi là Cửa sổ Công cụ (thanh) . Bất kỳ cửa sổ nào có WS_EX_TOOLWINDOWkiểu mở rộng sẽ được hiển thị mà không có menu hệ thống hoặc thu nhỏ / tối đa hóa hộp và thanh tiêu đề nhỏ. Trong Windows XP trở lên (hỗ trợ các chủ đề), các cửa sổ công cụ thường được hiển thị mà không có các góc tròn (ít nhất là với các chủ đề mặc định).

Kiểu này thường được sử dụng cho các thanh công cụ (Hình 1). Bạn có thể thấy nó bằng cách kéo thanh công cụ ra khỏi chương trình cho phép bạn sắp xếp lại các thanh công cụ. Lưu ý rằng nó trở thành một cửa sổ trông giống như trong câu hỏi. Windows Explorer cũng sử dụng nó cho các băng bàn (Hình 2) về cơ bản là giống nhau. Bạn có thể thấy những điều này bằng cách kéo một thư mục vào một trong các cạnh của màn hình, sau đó kéo thanh công cụ / bảng kết quả ra ngoài màn hình.

Rõ ràng một số chương trình sử dụng phong cách cho các mục đích khác, thường là một cách để tạo ra một loại hộp thoại tạm thời theo phương thức, là con của chương trình chính.

Lưu ý: điều này có một vài hiệu ứng (hai trong số đó thường là lý do cho việc sử dụng không chuẩn của nó):

  • Cửa sổ / hộp thoại với kiểu này không nhận được nút trên thanh tác vụ
  • Nó ngăn Alt+ Tabbing vào hộp thoại
  • Nó cũng ngăn Alt+ PrtScrbắt chỉ hộp thoại; toàn bộ cửa sổ chương trình cha mẹ được chụp.

Hình 1: Cửa sổ thanh công cụ MSPaint

nhập mô tả hình ảnh ở đây

Hình 2: Bàn làm việc Windows Explorer

nhập mô tả hình ảnh ở đây


Aha! Điều đó có ý nghĩa. :)
iglvzx

Alt+ PrintScreenchỉ chụp hộp thoại trong Windows 7 với hộp thoại Tùy chọn Notepad ++.
Bob

17

Chi tiết này tên của kiểu cửa sổ này và các tùy chọn có sẵn trong .NET; xem câu trả lời tuyệt vời của @ Synetech cho mục đích ban đầu của kiểu cửa sổ này, lý do có thể được sử dụng cho hộp thoại như vậy và việc triển khai trong các chương trình Windows không được quản lý như Notepad ++.


Cửa sổ có các góc vuông và trông như thế bởi vì một trong những nhà thiết kế / lập trình viên của Notepad ++ đã quyết định sử dụng một kiểu cửa sổ cụ thể. Synetech chi tiết những lợi thế của phong cách cửa sổ đó.

Trong .NET / Visual Studio, cái này được đặt trong thuộc FormBorderStyletính của System.Windows.Forms.Formlớp. Cụ thể, nó là FixedToolWindow. Các giá trị có thể nằm trong System.Windows.Forms.FormBorderStylebảng liệt kê.

Các ToolWindows trong .NET với tất cả các giá trị mặc định hoạt động hơi khác so với một đơn vị WS_EX_TOOLWINDOWtrong API Windows, mặc dù chúng trông giống nhau. Với thử nghiệm, tôi đã xác định rằng họ làm xuất hiện trên thanh tác vụ và họ làm xuất hiện trên Alt+ Tabswitcher nhiệm vụ trừ khi tài sản hình thức ShowInTaskbarđược thiết lập để false. ShowInTaskbarảnh hưởng đến khả năng hiển thị trong cả thanh tác vụ và Alt+ Tabcho ToolWindows, nhưng chỉ thanh tác vụ cho người khác.

Trong khi đó, cũng có thể loại bỏ các nút biểu tượng / thu nhỏ / khôi phục / tối đa hóa khỏi các kiểu cửa sổ phổ biến hơn, mặc dù dường như không thể thêm chúng vào ToolWindows. Cũng có thể ẩn các cửa sổ bình thường khỏi thanh tác vụ.

Ưu điểm chức năng duy nhất WS_EX_TOOLWINDOW, theo như tôi có thể nói, là cửa sổ không xuất hiện trong Alt+ Tab.


Tôi đã bao gồm một số ảnh chụp màn hình so sánh các kiểu cửa sổ .NET. Chúng không được sử dụng trực tiếp bởi Notepad ++, cũng như các chương trình không được quản lý khác, nhưng được đặt tên bởi Microsoft, vì vậy ...

Các giá trị có thể có của FormBorderStyle:

Hình ảnh đầu tiên là ảnh chụp màn hình của chương trình đang chạy với kích hoạt Aero, hình ảnh thứ hai là từ chế độ xem của nhà thiết kế Visual Studio (không có Aero).
Nhấp vào hình ảnh cho các phiên bản kích thước đầy đủ
Mô tả được lấy từ bài viết MSDN về FormBorderStylebảng liệt kê.

  • None

    Không biên giới.

Ảnh chụp màn hình_Aero Ảnh chụp màn hình_NonAero

  • FixedSingle

    Một đường viền cố định, một dòng.

Ảnh chụp màn hình_Aero Ảnh chụp màn hình_NonAero

  • Fixed3D

    Một đường viền ba chiều cố định.

Ảnh chụp màn hình_Aero Ảnh chụp màn hình_NonAero

  • FixedDialog

    Một đường viền dày, cố định kiểu hộp thoại.

Ảnh chụp màn hình_Aero Ảnh chụp màn hình_NonAero

  • Sizable (mặc định)

    Một biên giới thay đổi kích thước.

Ảnh chụp màn hình_Aero Ảnh chụp màn hình_NonAero

  • FixedToolWindow

    Một đường viền cửa sổ công cụ không thể thay đổi kích thước. Cửa sổ công cụ không xuất hiện trên thanh tác vụ hoặc trong cửa sổ xuất hiện khi người dùng nhấn ALT+ TAB. Mặc dù các biểu mẫu chỉ định FixedToolWindowthường không được hiển thị trên thanh tác vụ, bạn cũng phải đảm bảo rằng thuộc ShowInTaskbartính được đặt thành false, vì giá trị mặc định của nó là true.

Ảnh chụp màn hình_Aero Ảnh chụp màn hình_NonAero

  • SizableToolWindow

    Một biên giới cửa sổ công cụ thay đổi kích thước. Cửa sổ công cụ không xuất hiện trên thanh tác vụ hoặc trong cửa sổ xuất hiện khi người dùng nhấn ALT+ TAB.

Ảnh chụp màn hình_Aero Ảnh chụp màn hình_NonAero


Vâng! đó là những gì chúng ta đã nói về.
avirk

Nó không có gì để làm với mã được quản lý / không được quản lý hoặc mã gốc / .NET. Nó chỉ đơn giản là vấn đề làm thế nào Windows phong cách cửa sổ với WS_EX_TOOLWINDOWphong cách. NET đơn giản là bí danh FixedToolWindowđể WS_EX_TOOLWINDOWSizableToolWindowđể WS_EX_TOOLWINDOW|WS_THICKFRAME. Không xúc phạm, nhưng câu trả lời này không thực sự trả lời câu hỏi hoặc giải thích hành vi được hỏi, nó chỉ đơn giản là một danh sách / tài nguyên của các kiểu cửa sổ khác nhau được sử dụng trong .NET.
Synetech

@Synetech Tôi biết rằng nó không liên quan gì đến việc mã có được quản lý hay không, tôi chỉ nghĩ rằng tôi sẽ cung cấp tên .NET sử dụng và các tùy chọn khác có sẵn, với ảnh chụp màn hình về sự khác biệt. Does this type of window have a name?Nó trả lời rất nhiều, ít nhất là từ quan điểm của một lập trình viên .NET. Và giải thích? Bởi vì các lập trình viên cảm thấy thích sử dụng nó. Bạn đã liệt kê các hiệu ứng có thể mong muốn. Đó là về nó. Cho dù đó là đề nghị hay lên án bởi MS, tôi không biết. Cá nhân, tôi nghĩ rằng bạn đã làm một công việc đáng ngưỡng mộ để giải thích nó.
Bob

Đó là những gì chỉnh sửa dành cho.
Synetech

@Synetech là gì?
Bob
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.