High DPI Compatibility Fix


Overview

With today’s computers having high DPI/PPI (Dots-per-Inch/Pixels-per-Inch) screens, you can start experiencing some problems with the way certain pieces of software render things like buttons, dialog boxes, etc. Here is an example of this in CadSoft Eagle.

high-dpi

Although the menu appears normal (i.e. File, Edit, etc.), the toolbar icons are practically microscopic. There can also be problems with applications like Microsoft SQL Server Mangement Studio (SSMS) rendering dialog boxes so badly that you can’t read most of the information.

Partial Fixes

You can attempt to fix part of the problem with a combination of changes. Things like small window title text size can be adjusted in the Control Panel > Appearance and Personalization > Display section of the control panel. Here you can individually adjust each text area’s font size.

high-dpi-control-panel-display

In order to adjust things like the desktop icon sizes up to reasonable sizes you can set an overall scaling level. Within the Display dialog shown above, you can click on the “set a custom scaling level” link in the text of the first paragraph to show the dialog on the left. Alternatively you can select the Change Display Settings link on the left to show the dialog on the right below. This allows an overall scaling that will allow you adjust more than just text.

high-dpi-control-panel-display-scaling       high-dpi-control-panel-display-settings

However, none of these address the problem for programs that do not scale properly. The program mentioned in the beginning of this article (Eagle) is a perfect example of this. Even with scaling set to 250% the icons remain minuscule. So how do we make these stubborn programs usable?

Fixing Stubborn Apps

In order to fix those applications which refuse to scale properly, we’ll need to dig a little deeper. We will be instructing Windows, on a per application basis, that these programs are not DPI aware.

This fix will involve a registry change and the addition of a file to the folder that the program executes from. Although this is an easy change, if you are not comfortable with editing the registry, please do not implement this change. In either case, always backup your registry before making changes! You do not want to skip this step as a mistake in the registry could render your computer unusable!

How to Backup the Registry (MS KB322756)
https://support.microsoft.com/en-us/kb/322756

Steps

  1. Backup the registry using MS KB322756 link above.
  2. In the Search Windows box (next to Start button), type regedit and press enter.
  3. In the left-hand pane of the registry editor, browse to the following location.
    1. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide
  4. In the right-hand pane, right-click an empty area and select New > DWORD (32-bit) Value.
  5. For name, type PreferExternalManifest and press enter.
  6. Double-click the new PreferExternalManifest key, select the Decimal radio button, type 1 in the value data box and click OK.
  7. Close the registry editor.
  8. Navigate to the folder that contains the executable of the program you want to fix and note the name of the executable.
    1. In our example the folder might be C:\Program Files (x86)\Eagle-7.4.0\bin\ and the executable would be eagle.exe.
    2. If you’re unsure, right-click the program icon, select properties and note the Target path in the Shortcut tab.
  9. Right-click an empty area in the folder and select New > Text Document.
  10. Name the new file the name of the program executable (e.g. eagle.exe) with .manifest as the extension (e.g. eagle.exe.manifest).
  11. Open the new text file in a text-only editor such as Notepad (do not use a word processor).
  12. Copy the text from the linked file below, paste it into your file, save the file and exit.
    1. The file is a .doc file due to WordPress limitations. Just rename it to .txt or open it in Notepad once downloaded to copy and paste the contents.

File: Manifest Contents

Summary

That’s it! You can now try your program out to see if it is rendering properly. I hope this helps others out! If you have any questions or comments, please leave them below and feel free to check out some of my other articles!

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s