Final Words

Windows has always had the burden of bringing forward legacy APIs and code to allow applications designed for previous versions to continue to operate on newer releases. It also supports a huge number of display sizes, screen resolutions, and form factors. Because of this, it often struggles when major changes are introduced. One such change was the new security model in Windows Vista where (finally) users were no longer administrators by default, and another such change is ultra-high resolution displays with the different goal of improving image quality rather than just increasing usable real estate on the desktop.

Windows 8.1 now officially has three different states for applications: DPI-Unaware, System DPI-Aware, and Per-Monitor DPI-Aware, and solutions are in place to handle all three. It also has a fourth unofficial state: DPI-Unaware masquerading as DPI-Aware applications. Unfortunately there is no current solution for these unofficial applications.

One interim solution would be to have a way to force such applications to scale up, and therefore ignore the DPI-aware flag set in the executable. This would allow DPI Virtualization to scale the applications as needed. This is certainly not ideal, but when you are dealing with a product like Windows with such an enormous catalog of applications, it’s necessary because many of these applications will never be updated to correct scaling issues. The correct solution is to have applications updated to take advantage of the High DPI systems to provide a better user experience, but again this doesn’t really work for legacy applications.

One of the problems holding developers back is that there have been few high resolution devices on the market, meaning few developers would even bother taking the time to correct these issues. Now that there are finally devices from virtually every single computer maker with high PPI panels, there is a market force that will hopefully pressure developers into using best coding practices for scaling DPI.

But what about the current state of things –is it worth avoiding High DPI devices until more applications work properly? My personal experience is no, it’s not worth avoiding them. This will of course depend on what applications you use, but the advantage of a high resolution display is that you can always set the resolution lower if necessary as a workaround on applications like Photoshop. The advantage is that in other applications, you can get very crisp, clear text and a fantastic display for media. Within the next year, I would imagine most major Win32 applications that are actively being developed will have to address these issues. When Apple launched the Retina MacBooks, its catalog of applications took some time to be updated; as that happens for Windows applications, the investment in a High DPI system will make even more sense.

The final piece of the puzzle is the next iteration of Windows. Already shown at BUILD were Modern apps running in a windowed mode on the desktop. These apps will of course have no issues scaling with DPI, providing the ideal “one size fits all” approach to DPI scaling. Figuring out a similar solution for legacy applications on the desktop may be a bit more difficult, but it’s certainly something Microsoft is working to address. Time will tell how well they manage to do so.

Sources:

http://blogs.windows.com/windows/b/extremewindows/archive/2013/07/15/windows-8-1-dpi-scaling-enhancements.aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/dd464659(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/dn469266(v=vs.85).aspx

Windows 8.1 DPI Changes
Comments Locked

114 Comments

View All Comments

  • pixelstuff - Tuesday, April 15, 2014 - link

    Not to mention, apparently Adobe has created a HiDPI interface for OSX. So it's not exactly like they are having to reinvent the wheel on Windows.
  • jamyryals - Tuesday, April 15, 2014 - link

    Most developers are doing what was scoped for a project. DPI scaling was not very important for many years. It was difficult to assign resources to a problem when it was an issue that few encountered. Believe it or not, but most decisions in development are based on priority and not laziness. Go ahead and keep shaking your fist at them though, you'll show 'em!
  • eddman - Tuesday, April 15, 2014 - link

    Are you one of such developers, because I don't see how anyone can defend such practices.

    There are these things called guidelines. You don't need to have project "scopes" or resources to follow them. If a developer doesn't care to follow such basic things, then he/she doesn't deserve any respect.
  • npaladin2000 - Tuesday, April 15, 2014 - link

    When your project manager says "don't bother programming for DPI scaling, we don't have the time, and we have to meet this deadline in order to get paid on time" then you skip the frigging DPI scaling. Get it?
  • eddman - Tuesday, April 15, 2014 - link

    They would actually demand it?! Is it really that hard to code a DPI-aware program? I have a hard time believing the latter.

    If it is easy and yet they still ignore, then it is even worse than I thought.
  • inighthawki - Wednesday, April 16, 2014 - link

    Again, I see you don't work in the software industry. Every feature takes time. If that time is not in the current milestone budget, it gets cut. So yes, it happens, and your project manager absolutely can demand you not work on it.
  • Alexey291 - Wednesday, April 16, 2014 - link

    Sometimes I wonder if any of the people here have ever worked in ANY industry let alone as developers.

    Every project in the damn world has a set of priorities and you don't "just decide" to throw something in unless you're told to.
  • Gigaplex - Wednesday, April 16, 2014 - link

    Yes, it really is that hard to code DPI-awareness into a Win32 application. The API is horrendous.
  • UsernameAlreadyExists - Wednesday, April 16, 2014 - link

    Thus, since around 2007 (2006-2008?) writing Windows applications with WPF has been possible..

    "Windows Store apps require far less work from the developer in order to achieve this scaling. The app doesn’t have to be DPI aware, because by default all applications automatically are. Instead, things such as XAML layouts and SVG graphics allow the apps to be rescaled completely by the operating system."

    XAML, since 2008 or so has allowed the programs to be rescaled completely by the operating system. Might have been nice to mention this in the article.
  • Klimax - Thursday, April 17, 2014 - link

    If it is hard for you and like, then don't do UI yourself and use bloody framework or toolkit.

    Anyway:
    http://msdn.microsoft.com/en-us/library/windows/de...
    Tutorial:
    http://msdn.microsoft.com/en-us/library/windows/de...

    And I am sure similar docs were there for all those years...

Log in

Don't have an account? Sign up now