我正在 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
中是否有现成的功能来执行此操作?