John I think that the default language should be english.
Anyway the problem is that when a resource is not found for the current LCID the OS defaults to the lower resource LCI. In our case it is the german, 0x0407, which is less than the british english, 0x0809.
The solution is to define language and sublanguage of all common resource, actually defined respectively as LANG_ENGLISH and SUBLANG_ENGLISH_UK, as neutral: LANG_NEUTRAL and SUBLANG_NEUTRAL, which value is 0x0 for both.
In this way any LCID not found will default to neutral that is in english.
You'll find attached an emended version of resources file "FindFileUni.rc".
You can make tests by setting undefined languages like spanish or italian:
int APIENTRY wWinMain(HINSTANCE hinst, HINSTANCE hinstPrev, wchar_t * lpCmdLine, int nCmdShow)
{
/* These calls to SetLanguage() are only for testing purposes.
Normally the Locale is set automatically for your locale by the OS.
For completeness this also needs to be done for the other thread in
Private_FindFile()
*/
SetLanguage(0x040a); // Spanish (Spain)
//SetLanguage(0x0410); // Italian (Italy)
//SetLanguage(0x0809); // English (UK)
//SetLanguage(0x040c); // French
//SetLanguage(0x0407); // German (Standard)
//SetLanguage(0x0416); // Portuguese (Brazil)
//SetLanguage(0x040b); // Finnish
//SetLanguage(0x0419); // Rusian
//SetLanguage(0x0413); // Dutch