2015-09-24 9 views
7

Ho un codice che posiziona le finestre sullo schermo dei quadranti. Funziona bene su Windows XP, 7 e 8/8.1. Tuttavia, su Windows 10, c'è uno strano divario tra le finestre. Lo spazio extra circonda la finestra su tutti e 4 i lati. Presumo che abbia qualcosa a che fare con i bordi delle finestre, ma non riesco a capire come correggere il problema. Qualsiasi input sarebbe molto apprezzato. Il codice è il seguente: dimensione del carattereIl posizionamento della finestra ha come risultato lo spazio intorno a Windows su 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; 
} 
+1

Sì, Windows 10 fa proprio questo. Notare che l'hotspot per ridimensionare la finestra è in realtà al di fuori della cornice visibile sui bordi destro e inferiore. La dimensione visibile della finestra è inferiore alla sua dimensione effettiva. –

+0

@ JonathanPotter Grazie. Wow, un altro ridicolo cambiamento da parte di Microsoft. – Paul

+5

Nella nostra applicazione abbiamo avuto lo stesso comportamento su Windows 10. L'ho risolto utilizzando una combinazione della normale funzione 'GetWindowRect' e l'uso della funzione [' DwmGetWindowAttribute'] (https://msdn.microsoft.com/ en-us/library/windows/desktop/aa969515% 28v = vs.85% 29.aspx), insieme al parametro 'DWMWA_EXTENDED_FRAME_BOUNDS'. –

risposta

-3

la predefinita di Windows XP/7/8/8.1 è 100%, ma in finestre 10 è il predefinito per visualizzare il testo e gli elementi in 125%. Ciò influisce direttamente su tutte le dimensioni della finestra.

andare alle impostazioni, visualizzazione e troverete uno scroller, spostarlo al 100% e tutto dovrebbe visualizzare allo stesso modo come ha fatto in Windows 8/7/XP

+0

Non è possibile andare e modificare le impostazioni del client in questo modo. – CodeCaster

Problemi correlati