Nếu bạn nhìn vào cửa sổ trình duyệt Firefox, Chrome hoặc Opera, bạn sẽ thấy cửa sổ của chúngWinAPI: Tạo cửa sổ thay đổi kích thước không có thanh tiêu đề, nhưng với các nút thu nhỏ/tối đa/đóng (như Firefox/Chrome/Opera)
- có giảm thiểu/tối đa hóa/nút đóng
- là thay đổi kích thước
- nhưng không có thanh tiêu đề
tôi quan tâm: làm thế nào tôi có thể tạo ra một cửa sổ như vậy?
Những gì tôi đã cố gắng:
Tôi nhìn quanh trên StackOverflow (và googled, quá), và phát hiện này: opening a window that has no title bar with win32
Thật không may, điều này đã không giúp đỡ hoàn toàn:
Bước đầu tiên là mở rộng giải pháp được đề xuất trên opening a window that has no title bar with win32
hWnd = CreateWindow(szWindowClass, szTitle, WS_BORDER,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL);
SetWindowLong(hWnd, GWL_STYLE, WS_SIZEBOX);
// See remarks on http://msdn.microsoft.com/en-us/library/windows/desktop/ms633545.aspx
SetWindowPos(hWnd, 0,
0, 0, 0, 0, // Position + Size
SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
Tất nhiên, điều này mang lại không giảm thiểu/tối đa hóa các nút, nhưng mặt khác, nếu tôi muốn giảm thiểu/tối đa hóa các nút, tôi phải làm:
SetWindowLong(hWnd, GWL_STYLE, WS_SIZEBOX | WS_MAXIMIZEBOX |
WS_MINIMIZEBOX | WS_SYSMENU | WS_CAPTION);
Tại sao sự kết hợp này dường như là cần thiết? Đầu tiên tôi có thể muốn WS_MAXIMIZEBOX | WS_MINIMIZEBOX
vì tôi muốn các nút này.
Nhưng http://msdn.microsoft.com/en-us/library/ms632600.aspx nói rằng nếu tôi đặt một trong số WS_MAXIMIZEBOX
và WS_MINIMIZEBOX
, tôi cũng phải đặt WS_SYSMENU
. Và khi tôi đặt WS_SYSMENU
, tôi cũng phải đặt WS_CAPTION
nhưng đây không phải là điều tôi muốn, vì tôi muốn tránh thanh tiêu đề (thực sự: nếu chưa đặt WS_CAPTION
, không có nút thu nhỏ/tối đa được hiển thị).
Vì vậy, phải làm gì?
Phương pháp này không hoạt động trên các cửa sổ 10 –