非unicode程序的语言 设置是怎么影响程序的

非unicode程序的语言 设置是如何影响程序的
大家好, 我想问的是控制面板-语言和区域-高级选项卡中, 非unicode程序的语言 选项是如何影响程序的。我有个例子。
Visual C++ 6.0 Pro 在我的中文XP系统中, 界面字体目测为 SYSTEM, 然而在我的英文系统中, 界面字体目测为 Ms Sans Serif, 我又在中文系统中更改了 非unicode程序的语言 选项为 英文。 发现有同样的效果。

我参考了
http://blog.****.net/fmddlmyy/article/details/1510189
http://blog.****.net/fmddlmyy/article/details/1510193
但是个人很菜没有看懂。

我发现VC6中某个控件是这样加载字体的. 
字体名称存储在一个动态库中, 使用 CreateFont

3Q
------解决方案--------------------
如果你的界面是基于对话框的,那么你的界面字体是不会随着系统而变化的。除非你直接 CreateWindowEx 且不强制指定字体,那么字体的大小是可能会根据系统来变化的。这个字体目前还不知道系统是如何来判断的,但是可以通过 GetStockObject(SYSTEM_FONT) 来获取这个字体的句柄。英文系统中这个字体应该是 Tahoma 吧,MSDN 说的,我没试过。当然,基于对话框的程序所有的字体,包括菜单都是使用该对话框模版的字体。
------解决方案--------------------
Locale
Use the setlocale function to change or query some or all of the current program locale information. “Locale” refers to the locality (the country and language) for which you can customize certain aspects of your program. Some locale-dependent categories include the formatting of dates and the display format for monetary values. For more information, see Locale Categories. 

Locale-Dependent Routines


Routine 
Use setlocale Category 
Setting Dependence 
atof, atoi, atol Convert character to floating-point, integer, or long integer value, respectively LC_NUMERIC 
is Routines Test given integer for particular condition. LC_CTYPE 
isleadbyte Test for lead byte () LC_CTYPE 
localeconv Read appropriate values for formatting numeric quantities LC_MONETARY, LC_NUMERIC 
MB_CUR_MAX Maximum length in bytes of any multibyte character in current locale (macro defined in STDLIB.H) LC_CTYPE 
_mbccpy Copy one multibyte character LC_CTYPE 
_mbclen Return length, in bytes, of given multibyte character LC_CTYPE 
mblen Validate and return number of bytes in multibyte character LC_CTYPE 
_mbstrlen For multibyte-character strings: validate each character in string; return string length  LC_CTYPE 
mbstowcs Convert sequence of multibyte characters to corresponding sequence of wide characters LC_CTYPE 
mbtowc Convert multibyte character to corresponding wide character LC_CTYPE 
printf functions Write formatted output LC_NUMERIC (determines radix character output) 
scanf functions Read formatted input LC_NUMERIC (determines radix character recognition) 
setlocale, _wsetlocale Select locale for program Not applicable 
strcoll, wcscoll Compare characters of two strings LC_COLLATE 
_stricoll, _wcsicoll Compare characters of two strings (case insensitive) LC_COLLATE 
_strncoll, _wcsncoll Compare first n characters of two strings  LC_COLLATE 
_strnicoll, _wcsnicoll Compare first n characters of two strings (case insensitive) LC_COLLATE 
strftime, wcsftime Format date and time value according to supplied format argument LC_TIME 
_strlwr Convert, in place, each uppercase letter in given string to lowercase LC_CTYPE 
strtod, wcstod, strtol, wcstol, strtoul, wcstoul Convert character string to double, long, or unsigned long value LC_NUMERIC (determines radix character recognition) 
_strupr Convert, in place, each lowercase letter in string to uppercase LC_CTYPE 
strxfrm, wcsxfrm Transform string into collated form according to locale LC_COLLATE 
tolower, towlower Convert given character to corresponding lowercase character LC_CTYPE 
toupper, towupper Convert given character to corresponding uppercase letter LC_CTYPE 
wcstombs Convert sequence of wide characters to corresponding sequence of multibyte characters LC_CTYPE 
wctomb Convert wide character to corresponding multibyte character LC_CTYPE 
_wtoi, _wtol Convert wide-character string to int or long LC_NUMERIC 

------解决方案--------------------
字体和字符集不是一回事,字体是你在屏幕中看到的文本风格,字符集是在内存中字符的表达
字体使用FONT对象,
字符集在内存中存储的实际内容,字符集不同去文本内存数据不同,因此调用的命令也不相同,API都有对应的版本
比如你使用TextOut 实际是有两个版本