【发布时间】:2013-10-10 13:52:50
【问题描述】:
我正在 VS 2012 中设计一个 RTL 对话框,我偶然发现了以下错误:
错误 RC2104:未定义的关键字或键名:WS_EX_LAYOUTRTL
谷歌搜索结果为零,这非常罕见。
任何想法是什么问题以及如何解决?
在 .rc 对话框中定义 WS_EX_LAYOUTRTL 可以修复它,以及将 WS_EX_LAYOUTRTL 替换为 0x00400000L,但这些解决方案当然不会真正起作用,因为 .rc 文件是自动生成的并且更改会丢失。
【问题讨论】:
-
这篇 MS 开发中心文章可能对您有所帮助:How to Ensure Text is Displayed with the Correct Reading Direction。
-
你必须正确设置target Windows version,WINVER必须至少为0x0500。
-
我在 stdafx.h 中定义了 WINVER,但它似乎对 .rc 文件没有影响。在 .rc 文件中定义 WINVER 使其工作,但这不是解决方案。 ...在输入评论时,我发现 WINVER 应该包含在资源的流程定义中,这是解决方案属性中的一个单独选项卡。您可能想将其发布为答案,以便我接受。
-
如果您将
#define添加到资源文件的TEXTINCLUDE部分,它将在自动生成中继续存在。这是一个奇怪的问题,我只是尝试在我的一个对话框中设置该标志并且它工作正常,而且我的资源文件似乎没有在任何地方定义WINVER。 -
感谢@JonathanPotter。在看到您的评论之前,这实际上也是我解决它的方法。 Here's a minimal project 证明了这个问题。 VS 有一个从模板(带有窗口等)创建新项目的选项,它不会受到问题的影响,因为它包含一个“targetver.h”文件in it's
TEXTINCLUDE。