文字的主要显示align位置,只有5种:DT_LEFT、DT_CENTER 、DT_RIGHT、DT_SINGLELINE、DT_WORDBREAK。由于标志WORDBREAK,可能会输出多行,怎么样得到这多行的显示区域?

解决方案 »

  1.   

    有一个DT_CALC, 同时, 直接WORDBREAK应该不会多行, 只会截断, 有一个EDITCONTROL???
      

  2.   

    使用参数DT_CALCRECT,DrawText将根绝lpRect参数指定宽度计算并返回格式化后的文字高度,而不实际画图。
      

  3.   

    WORDBREAK 会多行, 加入参数DT_CALCRECT 可以取得显示的区域,
    DT_CALCRECT 时并不会显示出来, 他只是模拟计算显示区域, 
    在用DT_CALCRECT 时注意 RECT的区域必须先设置好
      

  4.   

    to 各位:
    使用DT_CALCRECT只会得到一个包含输出区域的外接矩形。但我想得到一个更精确的结果:由于字体align不同,输出的文字区域可能由多行大小不同的矩形组成,我想得到这些矩形,该怎么办?
      

  5.   

    GetTextExtent()可以得到一行文字的长宽,你有几行文字就可以乘以几得到文字占的区域,而后再加上文字之间的空隙,这可以通过GetTextMetrics()得到,加上前面得到的结果,最后的结果就是你的精确的矩形。