WS_EX_RTLREADING、shell 语言和 SetThreadUILanguage

问题描述 投票:0回答:1

我有一个由

CreateWindowExW()
使用
WC_LISTVIEWW
创建的 ListView。然后,我使用
LVCOLUMNW
创建列,并通过
pszText
设置文本。文本为阿拉伯语。

我希望此列表视图的列文本显示为 RTL,因此我将

WS_EX_RTLREADING
添加到扩展样式中。但是,它没有任何效果,因为根据 Microsoft,shell 语言需要是阿拉伯语或希伯来语。

我尝试使用

SetThreadUILanguage()
将线程语言设置为阿拉伯语,但没有帮助。

这个“shell语言”到底是什么?这是运行我的 Win32 应用程序的 shell 的语言吗?如果是,那只是

cmd.exe
的语言,还是操作系统语言?有没有办法在应用程序运行时动态更改此 shell 语言,然后再更改回来?

c++ windows winapi visual-c++ localization
1个回答
0
投票

不,“shell 语言”不是

cmd.exe
的语言。我相信这也适用于 Explorer。这是另一个同意这一点的答案:Windows 资源管理器是一个外壳,并为这种解释提供了很好的理由。

您明确链接的 Microsoft

doc 明确指出,当 shell 语言不是 RTL 时,WS_EX_RTLREADING

 无效。除了希伯来语和阿拉伯语之外,还包括波斯语、乌尔都语和其他语言。不幸的是,其中一些语言包没有定义完整的 Windows 资源管理器 UI,因此不能算作“shell 语言”。

© www.soinside.com 2019 - 2024. All rights reserved.