DrawText()、DT_LEFT 和冒号移动到文本开头?

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

在某些 PC 上,我发现对 DrawText() 的调用会导致冒号被放置在文本的开头。

dc.DrawText( "Name:", &rText, DT_LEFT | DT_VCENTER | DT_WORDBREAK );

我的电脑上的输出是

Name:

但在一台 PC 上尤其如此:

:Name

如果我将 DT_LEFT 更改为 DT_CENTER,冒号将出现在它应该出现的末尾。请问有什么想法吗?

mfc drawtext
2个回答
1
投票

好吧,上面的代码行并不完全准确。我请求的是我派生的设置了 DT_MODIFY 标志的 CStatic 控件的样式。在一台导致冒号被移动的特定机器上。因此,为了解决这个问题,我用 0x0000FFFF 屏蔽了它们的标志,一切正常。

干杯 闪闪发光


0
投票

如果将 DT_RTLREADING 传递给 DrawText,就会发生这种情况。 对于从右到左阅读的语言来说,这是正常的。 注意:据我所知 DT_MODIFY 不是 Win32 的一部分。

如果屏蔽有效,真正的原因可能是 Style 混入 (WS_GROUP) 或 ExStyle 混入 (WS_EX_STATICEDGE)。

WS_GROUP、WS_EX_STATICEDGE 和 DT_RTLREADING 均定义为 0x00020000。

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