Câu trả lời:
Có, có thể thay đổi thứ tự của ba nút tiêu đề trong khi DWM bị tắt. Nhưng nếu DWM được bật, chúng tôi không thể thay đổi thứ tự.
Phương pháp:
1) sao chép omni.ja từ C: \ Program Files (x86) \ Mozilla Firefox \ browser
2) giải nén nó bằng các công cụ zip của bạn
3) chỉnh sửa trình duyệt.xul trong chrome \ browser \ content \ browser, thay đổi thứ tự của nội dung sau
<hbox id="titlebar-buttonbox-container" align="start">
<hbox id="titlebar-buttonbox">
<toolbarbutton class="titlebar-button" id="titlebar-close" command="cmd_closeWindow"/>
<toolbarbutton class="titlebar-button" id="titlebar-max" oncommand="onTitlebarMaxClick();"/>
<toolbarbutton class="titlebar-button" id="titlebar-min" oncommand="window.minimize();"/>
</hbox>
thứ tự của thanh tiêu đề trở thành: close-> max-> thu nhỏ
4) đóng gói lại omni.ja bằng lệnh zip -qr9XD omni.ja *
trong thư mục omni.
5) thay thế omni.ja cũ bằng omni.ja đã chỉnh sửa mới
6) kết quả cuối cùng:
Giải trình:
1) Bố cục ui của Firefox dựa trên xul (ngôn ngữ mô tả bố cục dựa trên xml) và browser.xul được sử dụng làm tệp mô tả cho trình duyệt chính ui.
2) Trong khi DWM được bật, Firefox vẽ vùng không phải máy khách bằng cách sử dụng cửa sổ mặc định Proc (DefWindowProc),
case WM_NCPAINT:
{
/*
* Reset the non-client paint region so that it excludes the
* non-client areas we paint manually. Then call defwndproc
* to do the actual painting.
*/
if (!mCustomNonClient)
break;
// let the dwm handle nc painting on glass
if(nsUXThemeData::CheckForCompositor())
break;
HRGN paintRgn = ExcludeNonClientFromPaintRegion((HRGN)wParam);
LRESULT res = CallWindowProcW(GetPrevWindowProc(), mWnd,
msg, (WPARAM)paintRgn, lParam);
if (paintRgn != (HRGN)wParam)
DeleteObject(paintRgn);
*aRetValue = res;
result = true;
}
break;
Vì vậy, không thể tùy chỉnh ba nút trong khi bật dwm.