2009-05-02 59 views
0

我想wordwrap文本块显示窗口,否则会太长。我使用的字体不是固定宽度的字体,因此GetSystemMetrics不会为我的文本返回准确的值。Wordwrap Win32

使用static窗口不是一个选项,因为static窗口不告诉我一个重要的信息:在wordwrapping之后绘制的文本的高度。

任何想法?

Billy3

+0

由于两个答案基本相同,我检查了之前发布的答案。 – 2009-05-02 14:58:12

回答

4

查看Win32 API调用DrawtextEx。您需要通过DT_CALCRECT选项,告诉Windows您希望计算矩形。

+0

非常感谢你:) – 2009-05-02 14:57:23

2

您可以使用DrawText() API函数与DT _ CALCRECT标志设置。您需要先为HDC选择正确的字体。

+0

非常感谢你:) – 2009-05-02 14:57:19

1

DrawTextEx()将做你想要的一切,如果整个文本要显示在一个单一的字体需要。

如果你需要混合字体,你必须亲自完成工作。在这种情况下,您需要查看诸如GetTextMetrics()(而不是GetSystemMetrics())和GetTextExtentExPoint32()之类的API来计算每次运行的位置和大小。

如果您需要处理复杂的脚本(例如,从右到左的语言和脚本,其中字母根据上下文而改变形状),则需要Uniscribe。警告:Uniscribe功能强大但非常低。可能需要花费很多工作才能将其封装到更高级别的界面中。如果您需要复杂的脚本处理,则最好使用浏览器控件。