如何获取键盘布局的阅读方向

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

我正在 Windows 上使用 direct2d 实现一个简单的文本编辑器。我想确定阅读方向以知道将光标放置在何处。我正在使用

IDWriteTextLayout
可以通过
HitTestTextPosition
方法判断字形是从右到左还是从左到右,该方法返回
DWRITE_HIT_TEST_METRICS
包含
UINT32 bidiLevel
确定该字形的方向。问题是当布局为空(尚未输入文本)时,如果键盘设置为从右到左的语言(如阿拉伯语),我想将光标放在右边,如果键盘是左到对(像英语)。我可以从
HKL
获取
GetKeyboardLayout
并获取语言 ID 或使用
GetKeyboardLayoutName
检索布局名称,但我没有看到从其中任何一个获取阅读方向的功能。我正在考虑的方法是有一个从右到左语言的硬编码语言 id 列表,并检查
HKL
中返回的 id 是否是其中之一,但我认为这不是最好的方法因为列表可能不完整,微软说 Windows 8 有
LOCALE_TRANSIENT_KEYBOARD1
LOCALE_TRANSIENT_KEYBOARD2
,我不知道如何获得方向。
winapi
中是否有现成的功能来执行此操作?

c++ winapi
© www.soinside.com 2019 - 2024. All rights reserved.