2009-05-02 53 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功能強大但非常低。可能需要花費很多工作才能將其封裝到更高級別的界面中。如果您需要複雜的腳本處理,則最好使用瀏覽器控件。