In the last eight years, there have been an increasing number of display issues when using Microsoft Dynamics GP on high resolution monitors. There are a number of different factors coming into play which cause Dynamics GP to display incorrectly.
This article explains the issues, their causes and their solutions and finally explains how GP Power Tools makes the solutions extremely simple to implement.
The first issue was discovered by me back in 2009 when Windows 7 was released.
Most of Microsoft Dynamics GP’s user interface is generated from Dexterity (the development tool behind Dynamics GP) and its windows. By default, the font used on all the text on a window is the Dexterity System font. This font is displayed in windows using the MS Sans Serif bitmap font.
As a bitmap font, it is not scalable like a TrueType font would be. You will also notice it has no aliasing which means it does not work with the ClearType technology built in to Windows. Below is an example window created in Dexterity showing the various fonts as well as a 400% magnified close up with shows the aliasing in action.
Bitmap fonts lack the ability to dynamically resize as they are defined by a series of dots in a bitmap instead of as a series of vectors, curves and lines. In fact, Windows only has two sizes defined for bitmap fonts 100% and 120%. These two sizes for each bitmap font are stored in separate .FON files in the C:\Windows\Fonts folder.
Dynamics GP’s windows are built expecting the 100% version of the bitmap fonts to be used, and so all the spacing and sizing of the window and its controls are designed to fit with that sized font.
With Windows 7, when it first installs and identifies the system as having a high DPI monitor (which included 1920×1080 FullHD), it decided to be “helpful” and set the display DPI to 125% or 150%. Along with the DPI change, Windows would set the default bitmap font size to 120%.
Even though you can return the display setting back to 100%, the bitmap font size set in the registry is never changed by Windows after that initial install. The result was that the font used on most windows in Dynamics GP was too big as shown in these old screenshots:
You will notice that the window titlebar & menubar and window heading font sizes were correct in both as they are not bitmap fonts. You need to reset the fonts back to 100% for Dynamics GP to display correctly.
Windows 7 added the ability for individual users to have different DPI values on a single workstation, but that DPI setting was for all monitors connected. With Windows 8.1, the ability to have different DPI settings for each monitor was added and in Windows 10 this functionality has been extended and improved. This would all be wonderful in a world where all applications were multi-monitor DPI aware.
The next issue is that Microsoft Dynamics GP is not DPI Scaling aware. In fact there are many applications which are not DPI scaling aware, many applications which can only handle a single system DPI settings (was per pre Windows 8.1) and a few applications that are multi-monitor DPI aware.
When running at a DPI setting higher than 100%, Windows will instruct applications to adjust their size accordingly, the problem is that not all parts of all applications know how to do that. In Dynamics GP, there are some newer components to the user interface that can resize such as the application level toolbars. As the homepage is rendered using HTML, it can resize just like an internet browser can. However, the Dexterity based windows cannot resize and will be displayed at 100% and look tiny and unreadable on a high resolution screen.
My Surface Book runs at (3000×2000) resolution on a 13.5″ display and anything displayed at 100% size is just too small to work with. I use 150% DPI which gives a virtual resolution of (2000×1333) which is fairly close to my 27″ external monitor which runs at (2560×1440) at 100% DPI. As I drag a window (eg. Windows Explorer) from one monitor to the other, it resizes and ends up being about the same size relative to the desktop work area and to my eyes. This is how it is meant to work.
Below is an example of Microsoft Dynamics GP with its “mixed mode” DPI scaling with some bits huge and other bits tiny.
I have seen some different results with different versions of Microsoft Dynamics GP. For example: For me, Microsoft Dynamics GP 2016 looks like it will work correctly during login, but once logged in, the screen reverts to 100% is unusable.
Anyhow, there is a solution and it is called Bitmap Scaling. It was brought to my notice by fellow MVP, Steve Endow who applied to Dynamics GP the technique he discovered from a post by SQL consultant, Gianluca Sartori.
It works on Windows 10 and possibly on Windows 8.1 (I don’t have a machine to test). The solution works with two steps.
- A Registry Setting which tells windows to use a manifest file to control scaling, if it is present. (Restart required)
- A manifest file for each executable application that needs to declare it is not DPI Aware.
Once Windows identifies an application as not being DPI Aware, it will implement bitmap scaling to allow it to scale on the monitor with the correct DPI setting applied. It does this by running the application at its native 100% scaling off-screen and then renders the windows on the monitor using an interpolated zoom.
This method can introduce some blurriness to the resulting window depending on the DPI setting. For example: at 200% DPI, every pixel can become 4 pixels (stretched by 2 in both directions) and the resulting image should be fairly crisp. I use 150%, which means that each pixel becomes 2.25 pixels (stretched by 1.5 in both directions) and so will be blurred slightly.
The end result is still much more usable than before, even with some blurriness.
When Windows uses DPI Scaling to adjust the sizes of the windows, the Scrollbar width on the window can get wider. On some transaction windows which have the scrolling windows with a column of numbers on the right hand edge, this can cause the last digit to get covered up.
It is possible to force the width of the scrollbar to remain at the fixed value of 17 pixels, which is the size the windows were created with.
Another issue that has been causing issues especially in multi-monitor configurations is that windows in Dynamics GP which remember their positions can open outside of the visible area of the Desktop and hence appear not to open at all (especially the Note windows).
I did publish a keyboard sequence which can be used to make the window visible again but can offer a much better solution now. Never allow the window to even open off screen again.
The solutions to all of these issues is GP Power Tools. While there are manual solutions to these issues, GP Power Tools simplifies everything by providing the user interface to make all the changes needed. You will need Build 21 (Last Modified: 05-Nov-2016) or later code installed for these functions to be available.
Just launch Microsoft Dynamics GP using Run as Administrator, then go to GP Power Tools >> Cards >> Dex.ini Settings . This will allow the registry settings and file changes in the program folders to be applied. These settings need to be applied for each workstation.
Below are the Windows Bitmap Font and Windows Bitmap Scaling settings as well as the Scrollbar width override setting:
To ensure a window never opens outside the visible area of the desktop, go to GP Power Tools >> Setup >> Administrator Settings >> Usability Settings, and ensure the highlighted setting is selected. This setting is system wide and will take effect on next login for on all workstations where GP Power Tools is installed (which should be all of them!).
Note: Prior builds of GP Power Tools do not have the Bitmap Scaling settings and have a calculation issue with automatic window re-positioning on high DPI monitors which could cause windows to move incorrectly.
If you like the window’s colors in the screenshots above, that is added using the Company based Color schemes feature of GP Power Tools. Watch the video here: GP Power Tools Videos.
[Edit] Windows 10 has added its own scaling options which don’t work properly for Microsoft Dynamics GP and prevent the Bitmap Scaling fix from working. Please ensure that these options are disabled. See the screenshot below to see where they are hidden:
[Edit] Windows Server versions also have application properties settings for disabling display scaling which must not be selected to allow bitmap scaling to work.
[Edit] We have also seen situations where Windows 10 Updates can remove the Bitmap Scaling registry setting change and so it might need to be reapplied if it has failed.
For more information on the manual solutions to these issues, see the articles below:
- Windows 7, bitmap fonts and Microsoft Dynamics GP
- More on Windows 7, bitmap fonts and DPI settings
- Fix Dynamics GP scaling and font size issues on high DPI displays
- SSMS in High-DPI Displays: How to Stop the Madness
- Where has my Microsoft Dynamics GP window gone?
- #MSCONNECT Allow Dynamics GP Desktop client to resize correctly based on screen DPI percentage
Hope this is helpful
29-Jan-2020: Updated article to mention disabling Windows 10’s own scaling options.
31-Jan-2020: Updated to mention that Windows 10 updates can remove the Bitmap Scaling registry change.
12-Nov-2020: Updated to add Windows Server scaling options screenshot.
This article was originally posted on http://www.winthropdc.com/blog.