Tôi có một số mã đặt vị trí cửa sổ vào phần tư màn hình. Nó hoạt động tốt trên Windows XP, 7 và 8/8.1. Tuy nhiên, trên Windows 10, có một khoảng cách kỳ lạ giữa các cửa sổ. Không gian thêm bao quanh cửa sổ trên tất cả 4 mặt. Tôi đoán nó có cái gì để làm với biên giới cửa sổ, nhưng không thể tìm ra cách để sửa chữa vấn đề. Bất kỳ đầu vào nào cũng sẽ được đánh giá cao. Mã này như sau:Kết quả định vị cửa sổ trong không gian xung quanh cửa sổ trên Windows 10
// Get monitor info
HMONITOR hm = MonitorFromWindow(hWnd, MONITOR_DEFAULTTONEAREST);
MONITORINFO mi;
mi.cbSize = sizeof(mi);
GetMonitorInfo(hm, &mi);
// Set screen coordinates and dimensions of monitor's work area
DWORD x = mi.rcWork.left;
DWORD y = mi.rcWork.top;
DWORD w = mi.rcWork.right - x;
DWORD h = mi.rcWork.bottom - y;
switch (corner) {
case 0: // Left top
SetWindowPos(hWnd, HWND_TOP, x, y, w/2, h/2, SWP_NOZORDER);
break;
case 1: // Right top
SetWindowPos(hWnd, HWND_TOP, x + w/2, y, w/2, h/2, SWP_NOZORDER);
break;
case 2: // Right bottom
SetWindowPos(hWnd, HWND_TOP, x + w/2, y + h/2, w/2, h/2, SWP_NOZORDER);
break;
case 3: // Left bottom
SetWindowPos(hWnd, HWND_TOP, x, y + h/2, w/2, h/2, SWP_NOZORDER);
break;
}
Có, Windows 10 chỉ thực hiện điều đó. Lưu ý rằng điểm phát sóng để thay đổi kích thước cửa sổ thực sự nằm ngoài khung hiển thị ở cạnh phải và cạnh dưới. Kích thước hiển thị của cửa sổ nhỏ hơn kích thước thực của cửa sổ. –
@JonathanPotter Cảm ơn. Wow, một thay đổi vô lý khác của Microsoft. – Paul
Trong ứng dụng riêng của chúng tôi, chúng tôi đã có hành vi tương tự trên Windows 10. Tôi đã sửa nó bằng cách sử dụng kết hợp chức năng 'GetWindowRect' bình thường và sử dụng hàm [' DwmGetWindowAttribute'] (https://msdn.microsoft.com/ en-us/library/windows/desktop/aa969515% 28v = vs.85% 29.aspx), cùng với tham số 'DWMWA_EXTENDED_FRAME_BOUNDS'. –