如何检测Windows安装是否为RTL

3

我正在使用Windows XP,但这个问题适用于所有/任何版本的Windows。

Windows安装有两种“口味”:LTR或RTL。 也就是说,GUI(按钮、窗口控件、菜单等)从左到右或从右到左显示。

这主要与希伯来语和阿拉伯语版本的Windows有关。

我的程序需要找出显示其小部件的默认行为。

LOCALE不是正确的答案!

本地设置涉及日期格式、千位分隔符、UI语言和其他语言/文化特定设置,但在Windows中,本地设置不会影响UI方向。

我该如何找出(注册表、环境等)操作系统的方向?


http://blogs.msdn.com/b/oldnewthing/archive/2011/12/22/10250164.aspx - Hans Passant
@HansPassant 这不仅适用于特定的语言环境吗? - Mahmoud Al-Qudsi
当然,就像系统区域设置一样。 - Hans Passant
2
请注意,Windows Vista及以上版本没有特定的LTR和RTL版本,这完全取决于当前的语言包和区域设置。 - Deanna
只需按照设计方向显示应用程序的用户界面。如果您使用的是RTL系统,那么尝试在RTL中显示英文文本是没有意义的。 - Raymond Chen
3个回答

3

2

使用GetWindowLong检查系统任务栏中的WS_EX_LAYOUTRTL,以确定开始菜单的位置,从而得知操作系统的文本方向:

if (GetWindowLong(FindWindow(_T("HHTaskBar"), NULL), GWL_EXSTYLE) != 0)
    //it's RTL

Shell_TrayWnd 是另一个选项。 - user541686

-1

使用GetSystemMetrics和SM_MIDEASTENABLED的nIndex,如果系统启用了希伯来语和阿拉伯语,则返回非零值,否则返回0。


1
不是的。这只是意味着我可以正确地读写。它并没有说明GUI方向的问题。我的系统具有从左到右的GUI,而“你的”函数返回1(真)。 - Berry Tsakala

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接