我正在C#中开发一个工具,它允许用户为USB设备配置USB字符串描述符。字符串描述符之一是语言ID,我希望UI显示语言名称列表,而不是神秘的语言ID。我找不到任何API来给我USB {语言ID -语言名称}映射。
当我查看Windows ( LCID )时,LCID和usb语言ID似乎是相同的(根据我比较过的几个条目推断)。
所以,我的问题是
发布于 2013-03-15 08:54:10
它们确实是密切相关的,但它们并不完全相同。
根据Ankur所链接的文件
LanguageID参数指定语言ID (与Microsoft Win32LANGID值中使用的值相同)。
LANGID值构成Win32 LCID值的一部分。通过研究LCID文档,你可以看到这一点。
每个语言环境都有一个唯一的标识符,一个由语言标识符和排序顺序标识符组成的32位值。
因此,这两个值不是完全可互换的。通过更改排序顺序标识符( LCID值的另一部分),您可以得到多个LCID值,它们都表示相同的语言(即,具有相同的LANGID)。
将两者视为等价物可能会在大多数时间起作用(这就解释了视觉检查的结果),但它也可能会失效。我建议不要依赖于假设,并做一些额外的工作,以确保您与文档一致,您的代码是健壮的。
Win32 SDK提供了一些宏来帮助您在LCID和LANGID之间进行相互转换。您可以在头文件中查找这些文件,并将它们转换为C#助手函数。你在这里感兴趣的是:
SORT_DEFAULT来指示该语言的默认排序顺序。使用这些帮助函数之一将确保在调用接受LCID参数的NLS时获得有效的结果。
发布于 2013-03-15 06:04:10
我想他们是一样的。看看这个链接。
http://msdn.microsoft.com/en-us/library/windows/hardware/ff540156(v=vs.85).aspx
https://stackoverflow.com/questions/15425673
复制相似问题