High DPI Changes

Although the Mac had a fairly seamless transition to “Retina” displays, Microsoft hasn’t had the luxury of owning the end-to-end product, and as always with Windows, there is a huge backlog of older applications as well. To say the transition to high DPI has been a challenge would be an understatement. They have made some great progress here, but they still have a lot of work to do, and they don’t have the developer buy-in to just add ways for developers to fix their apps either. Any changes here need to benefit the myriad of applications that don’t, and likely never will, support high DPI APIs.

UWP apps are practically exempt from these issues, but the majority of Windows applications are not UWP, and even tools Microsoft has built to help developers bring their apps to the store, such as the Centennial bridge to convert Win32 apps to packaged apps for the store, can’t fix the underlying issues with supporting applications that were built for 96 DPI on displays with double, triple, or even more, DPI.

But that hasn’t stopped Microsoft from making progress. The Anniversary Update brought some nice changes and worked on per-monitor DPI awareness issues, and introduced mixed-mode DPI scaling, and DPI awareness at the process level instead of just the application level.

A graphic showing many of the common issues with High DPI, especially on mulitple different DPI displays

With the Creators Update, they are introducing a new way to handle per-monitor DPI issues, which they have dubbed Per-monitor DPI awareness V2. The new method adds support for child window DPI change notifications, automatically enabled non-client scaling, automatic DPI scaling for dialog boxes, and more control for dialog scaling. All of these are to improve how a developer handles DPI scaling, and especially on a system with multiple monitors with different DPIs, which has been one of the biggest sore spots even as the primary monitor DPI issues have been worked on over the last couple of years. This is an incredibly common scenario too, with a high-resolution laptop docked to a standard resolution display, for example.

Win32 clearly has a lot of baggage to deal with, but hopefully we will continue to see API improvements in Windows 10 updates to keep chipping away at these issues. However, this assumes that a developer is actually going to update their application. That may never happen.

When looking at this issue three years ago when we looked at DPI issues in Windows, one of the conclusions was that Windows has to stop expecting applications to behave correctly. There needed to be an override on the exe to force it to be scaled by Windows, since many applications were claiming to be DPI aware, when they were not at all. If the application could be set to ignore this flag, at least Windows would be able to scale it using bitmap stretching. It wouldn’t be ideal, but it could perhaps make the application useable when it would otherwise not be.

Microsoft has somewhat addressed this, with a new setting in the application compatibility called System (enhanced) DPI scaling. This new setting has some limitations, but is effective enough that Microsoft is using it for some built-in applications. Functionality is limited to GDI-based applications and it won’t correctly scale GDI+ content, DX content, or bitmap content, so it may have limited appeal. End users will have to try this on any application they are having DPI issues with to see if it helps.

But when it does help, it helps a lot. Microsoft is using this new scaling method to fix the Microsoft Management Console (mmc.exe) which means the device manager, and more, will be scaled correctly in the Creators Update. Here’s a screenshot of the differences.

Enhanced Scaling OFF

Enhanced Scaling ON

If the application is mostly text based, it could be improved quite a bit with the new mode. It’s not going to solve all applications from having issues, but it’s a nice step in the right direction.

They have also fixed desktop icons being scaled incorrectly if running in a mixed monitor environment.

Microsoft acknowledges there is still work to be done here, especially in the mixed monitor scenario. They are looking at having the Display Settings section show displays in their physical size rather than resolution, which would help a lot if you have a low-resolution monitor that’s larger than a high-resolution monitor, and it makes dragging windows between them difficult. They would also like to address the weird giant windows you get dragging windows from a high DPI display to a low DPI display. There is more coming as well, so stay tuned.

Privacy Changes, OOBE, and App Installs Windows Subsystem for Linux
Comments Locked

69 Comments

View All Comments

  • Ubercake - Tuesday, April 25, 2017 - link

    When it comes to hardware of any kind coming out of Microsoft, count on Microsoft to stop producing and supporting (or in other words "giving up") on it within a couple of years. This Surface Studio is a fantastic idea. The Microsoft Band was a great idea/product. Now no longer supported/produced. The Surface RT was a great idea that wasn't supported after its 3rd year. Mainstream phone apps are still not there. Zune music player (sort of competing with iPod) was gone soon after it was started.

    The universal windows platform or whatever it won't be called because the hardware just won't be their to support the idea in a few years. Nothing portable device outside of the Surface Pro (all 10 of you Surface Pro users know what I'm talking about!) will be around using the Windows OS in a few years. Why is Microsoft focusing at all on a universal platform that isn't Android- or iOS-based when you know no Microsoft hardware is supported for more than a couple of years? So they can quit it in a couple of years like everything else?
  • xthetenth - Tuesday, April 25, 2017 - link

    The reason the Surface 3 is gone without a successor is because the niche for a lower cost 2 in 1 is an ecosystem now, not a single product.
  • Flunk - Tuesday, April 25, 2017 - link

    Intel also pulled the plug on the line of Atom chips the Surface 3 used, leaving Microsoft high and dry. It's possible they'll come up with a new non-pro Surface that uses ARM chips, but that didn't sell all the great the first time.
  • gerz1219 - Tuesday, April 25, 2017 - link

    They seem to have a foothold with the Surface Pro, so I wouldn't expect them to kill that any time soon. The problem with Microsoft's hardware ventures is that many of them simply haven't sold very well. They kind of had to give up on the Zune when they had warehouses full of unsold units and it was clear that nobody wanted an alternative to the iPod. Same for Surface RT and the Windows phones.

    I think any Microsoft device that kind of overlaps with traditional desktops will be well supported in the future. It's their attempts to branch out into mobile that have routinely failed and been abandoned.
  • Holliday75 - Tuesday, April 25, 2017 - link

    I have a Surface Pro. Who are the other 9 users? We should start a club!
  • SaolDan - Tuesday, April 25, 2017 - link

    SP4 FTW.
  • Instyle - Thursday, April 27, 2017 - link

    The Surface Studio is currently available so I have no idea what you're talking about there. The Surface Pro and Xbox lines have sold in the millions, have plenty of active users and are currently supported. The Zune was supported for quite a long time as well. I think you need to go do some research. The main failed products were Windows Mobile, Surface RT and Microsoft Band.
  • DanNeely - Tuesday, April 25, 2017 - link

    "Hopefully we’ll have a chance to dig into this a bit more in the future."

    Some things in game mode I'd be interested in seeing tested (and might try myself in a few weeks or month when I install the update) are if it helps distributed computing play any nicer with not just games but foreground apps in general. I run several BOINC projects with my spare CPU/GPU cycles. For the most part it just works on the desktop and with simpler games. Games that are GPU heavy or use multiple heavy threads are a problem though because the OS doesn't give enough GPU to keep frame rates up and effectively only lets the game have a single CPU core. Boinc's mitigation options are rather limited; basically I can set it so that when certain apps are running (by executable path) Boinc entirely stops CPU and/or GPU apps. It's all or nothing though (meaning I can't let it leave 4 cores free for my game and continue to do science on the other 4).

    More recently I've ran into occasional problems with HTML5 video playback while a GPU apps are running. Years ago I had similar problems with the general desktop and some GPU apps, but that was a much more consistent case. This is far more intermittent and I haven't been able to nail down any sort of pattern yet. May try gaming my browser to see what happens.
  • dgingeri - Tuesday, April 25, 2017 - link

    Why am I so much less enthused about this update than I was about the last big one? It just doesn't seem to have anything I'm interested in.
  • kwall8 - Tuesday, April 25, 2017 - link

    The best addition is an address bar in regedit. Only took them 20 years :D

Log in

Don't have an account? Sign up now