根据LOCALE_ILANGUAGE的MS文档:
Windows Vista及更高版本:使用此常量可能会导致GetLocaleInfo返回无效的区域设置标识符。调用此函数时,您的应用程序应使用LOCALE_SNAME常量。
GetLocaleInfo function州的MS文档:
注意出于互操作性原因,应用程序应优先使用GetLocaleInfoEx函数 GetLocaleInfo ,因为Microsoft正在迁移使用区域设置名称而不是区域设置标识符新的语言环境。任何仅在Windows Vista及更高版本上运行的应用程序都应使用GetLocaleInfoEx。
GetLocaleInfoEx function州的MS文档:
从Windows Vista开始,您的应用程序不应在 LCType 参数中使用LOCALE_ILANGUAGE,以避免意外数据失败或检索。相反,建议您的应用程序调用 GetLocaleInfoEx 。
现在我的问题:
由于 LOCALE_ILANGUAGE 的使用似乎已被弃用,如何为剪贴板指定 CF_LOCALE ? Standard Clipboard Formats的MS文档:
CF_LOCALE 16
数据是与剪贴板中的文本关联的区域设置标识符的句柄。当您关闭剪贴板时,如果它包含 CF_TEXT 数据但没有 CF_LOCALE 数据,系统会自动将 CF_LOCALE 格式设置为当前输入语言。您可以使用 CF_LOCALE 格式将不同的区域设置与剪贴板文本相关联。
从剪贴板粘贴文本的应用程序可以检索此格式以确定用于生成文本的字符集。
请注意,剪贴板不支持多个字符集中的纯文本。要实现此目的,请使用格式化的文本数据类型,例如RTF。
系统使用与 CF_LOCALE 关联的代码页隐式转换为 CF_TEXT 为 CF_UNICODETEXT 。因此,正确的代码页表用于转换。
或者还假设没人会再使用MBCS了?如果是这种情况,我们谈论完全弃用的时间表是什么?
我问这个是因为我正在研究一个遗留应用程序,需要理解告诉我的上级。