- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
上周我一直在试图消除嵌入资源(通过 .rc
文件)与国际化相关的行为,这确实感觉像是某种奇怪的计算机考古学。
有关此功能的大部分信息已过时或无用,包括 official documentation .
Michael Kaplan也没有高度评价它,该博文中提供的信息似乎不再正确(即我无法重现 SetThreadLocale
具有可观察效果的任何场景)。
在相当现代的系统(例如,Win7 和更新版本)上,SetThreadLocale
实际上 做了什么,即哪些 API 受“线程区域设置”(无论应该是)?
我已经排除了任何资源加载FindResource[Ex]
,包括LoadString
、对话框和菜单功能; 格式信息
; strsafe.h
*Printf
系列; datetimeapi.h
的 GetDateFormat
等;和标准消息框。
最佳答案
我最近的调查表明,SetThreadLocale() 和 GetThreadLocale() 几乎已经过时了。至少从Win7+开始,DialogBox
,FindResource
等的资源LANGUAGE
匹配行为不受SetThreadLocale()
影响通过 GetThreadUILanguage()
。
我有专门的测试程序来证明这个结论:https://github.com/chjfth/trivials/tree/master/mswin/About2-muires
SetThreadLocale
的 MSDN 页面多年来缺乏维护。一些微软员工通过打补丁而不是返工来更新它。该页面说,
SetThreadLocale affects the selection of resources with a LANGUAGE statement.
我现在几乎可以肯定它仅适用于 Windows NT4 或 Windows 95/98,非常过时的 Windows 版本,到 2022 年没有人会坚持使用。所以每个人都应该同意删除该段以避免误导。
我发现 SetThreadLocale 的唯一作用是当我们调用一些与 CP_THREAD_ACP
相关的 WinAPI 时,例如 MultiByteToWideChar(CP_THREAD_ACP, ...)
,thread-locale SetThreadLocale()
设置的值将决定 MultiByteToWideChar
使用的代码页。
关于windows - SetThreadLocale 到底做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61212312/
上周我一直在试图消除嵌入资源(通过 .rc 文件)与国际化相关的行为,这确实感觉像是某种奇怪的计算机考古学。 有关此功能的大部分信息已过时或无用,包括 official documentation .
我知道如果我想使用 LCID 为我的线程更改语言环境,我可以调用 SetThreadLocale ,但如何使用 LCID 在进程范围内设置它? 最佳答案 WinApi 无法做到这一点。语言环境是按用户
所以我想使用 SetThreadLocale 将线程代码页设置为 UTF8。到目前为止,我一直在使用 atl 字符串转换宏的第二个参数,如“CT2A(szBUF, CP_UTF8)”来执行此操作。但我
我是一名优秀的程序员,十分优秀!