Applications with Multiple DLLs
A version of this page is also available for
4/8/2010
An application that comprises multiple DLLs and/or EXEs has two multi-language implementation choices:
The application can provide an MUI resource DLL for each language and for each EXE or DLL that uses resources. In this case, for example, if MYAPP.EXE used MYDLL.DLL and MYHELPER.DLL, it would have to provide the following resources:
Locale 0409 Locale 040c Locale 0411 MYAPP.EXE.0409.MUI
MYAPP.EXE.040c.MUI
MYAPP.EXE.0411.MUI
MYDLL.DLL.0409.MUI
MYDLL.DLL.040c.MUI
MYDLL. DLL.0411.MUI
MYHELPER.DLL.0409.MUI
MYHELPER.DLL.040c.MUI
MYHELPER.DLL.0411.MUI
- or -
The application can provide a single MUI DLL for each language that is shared by all its modules (EXEs or DLLs). In this case, the application developer must include a special "pointer" in each module to tell the OS where to look for the resources. This pointer consists of a special resource of type RT_MUI and resource ID ID_MUI, whose value is a Unicode string that provides the prefix name of the MUI DLL.
To combine the resources for MYDLL.DLL and MYHELPER.DLL into MYAPP.EXE.xxxx.MUI, insert a single resource into each of the DLLs with type RT_MUI and resource-ID ID_MUI whose value is the Unicode string "MYAPP.EXE". This will cause the OS to look for resources not in MYDLL.DLL.xxxx.MUI, but in MYAPP.EXE.xxxx.MUI.
The following code example shows an RC file that contains this special resource:// SHARE.RC file ID_MUI RT_MUI DISCARDABLE BEGIN // "MYAPP.EXE" in Unicode 0x004D, 0x0059, 0x0041, 0x0050, 0x0050, 0x002E, 0x0045, 0x0058, 0x0045, 0x0000 END