MS Shell Dlg


The following is an excerpt from the Microsoft MSDN Library, April 2000:


“MS Shell Dlg is a mapping mechanism that enables U.S. English Windows NT/Windows 2000 to support locales that have characters that are not contained in code page 1252. It is not a font but a face name for a nonexistent font. It can be specified in either the Windows NT/Windows 2000 Setup file during the installation process or when customizing a local system by double-clicking Control Panel's Regional Options icon. When you double-click the icon, click the Set default ... button in the General sheet of the Regional Options dialog box. Select the appropriate locale in the Select System Locale dialog box and click OK, then restart the system. The appropriate change occurs in the following registry key:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Current Version\FontSubstitutes


A benefit of font mapping in the registry is that you can change the font for the entire shell by simply changing one .inf file entry. For example, localization for Asia is much easier because you can change the .inf file entry, instead of changing every instance of MS Sans Serif in every .rc and .dlg file, and the change is complete without rebuilding any binaries. Win32-based applications that contain multiple language resources that cross character-set boundaries can also take advantage of this feature. It is also useful when you have an English application in which supporting multiple languages and character sets is important.


MS Shell Dlg is not intended for use when you are working with a static, non-English UI application that you want to run when the user has chosen a locale with a different Windows base character set. This is because the application's UI language may not be supported with the font that is substituted for MS Shell Dlg. For example, if you are using a German localized version of Windows NT/Windows 2000 and want to install a non-Unicode, Greek application, you can use Control Panel's Regional Options applet to change the locale to Greek. This will reset MS Shell Dlg to be a Greek font but this font does not contain all of the glyphs necessary to display German. Therefore, any non-ASCII characters in your German UI will not be displayed properly. To support this scenario, you would have to set MS Shell Dlg to a font that contains both the Western European and the Greek glyphs.


Note, on Windows 95 you cannot switch Windows character sets, so the role of MS Shell Dlg is more limited. It does, however, facilitate localization in that the system is equipped with a static entry to replace the standard system font. For example, the system font, MS Sans Serif, is easily replaced with MS San Serif Greek or another language. This also ensures compatibility with the applets provided with Windows NT/Windows 2000.


On Windows 2000, there is a new interface font called MS Shell Dlg 2. This maps to Tahoma, which is the default font used throughout Windows 2000. For an application that runs only on Windows 2000, you can specify DS_SHELLFONT with MS Shell Dlg 2 to map to Tahoma. However, for an application that runs on Windows 95/98 or Windows NT 4.0 as well as Windows 2000, you should specify DS_SHELLFONT with MS Shell Dlg (that is, do not use MS Shell Dlg 2). This maps to Tahoma on Windows 2000 and to MS Sans Serif on both Windows 95/98 and Windows NT 4.0. MS Shell Dlg2 has no mapping on Windows 95/98 or Windows NT 4.0, so applications that specify MS Shell Dlg 2 in the dialog template for these platforms display a font that shows poorly.


Note, because the font generated using MS Shell Dlg is different on Windows 2000 from that on Windows 95/98 and Windows NT 4.0, you should check that the dialog box looks good on all platforms.”