【问题标题】:RichEdit, winapi - paragraph aligmentRichEdit、winapi——段落对齐
【发布时间】:2012-09-14 22:34:38
【问题描述】:

我想让一行以这样的方式对齐,一些第一个单词左对齐,一些最后一个单词右对齐,但都在同一行:

| text 1                           text2 |
| Lorem ipsum             dolor sit amet |

这可能吗?我怎样才能做到这一点?

【问题讨论】:

    标签: winapi richedit text-alignment paragraphs


    【解决方案1】:

    据我所知,唯一的方法是使用制表位。您只需在最右边创建一个右对齐制表位。然后你必须把你的文字写成

    text 1\ttext2
    Lorem ipsum\tdolor sit amet
    

    其中 \t 是制表符(即 U+0009)。

    【讨论】:

    • 这没关系,但我在定义制表位时遇到了几个问题。例如,我不能使右对齐选项卡工作。我在 Windows 7 上使用 RichEdit20.dll,所以将 pf.rgxTabs 设置为 0x2000000 应该可以,我错了吗?
    • 请参阅msdn.microsoft.com/en-us/library/bb787942(v=VS.85).aspx:“位 24-27 可以指定以下值之一来指示制表符对齐。这些位不会影响 Microsoft Rich Edit 3.0 之前版本的 Rich Edit 控件显示。 "
    • 但是根据msdn.microsoft.com/en-us/library/bb787873(v=VS.85).aspx Riched20.dll对应微软Rich Edit 3.0
    • @bartek:您应该将 rgxTabs 设置为 ThePositionOfTheRightEdge + 0x2000000。 ThePositionOfTheRightEdge 应该是数量级或几千“缇”。但我也无法使制表位右对齐...
    • 我只是尝试在 Microsoft Word 2007 中创建一个使用右对齐制表位的 RTF 文件,当我在我的 RichEdit 控件中加载 RTF 文件时,制表位确实是右对齐的,并且PARAFORMAT2 看起来完全符合我们的预期。为什么它不起作用有点神秘......
    【解决方案2】:

    我遇到了同样的问题,您需要使用wParam = TO_ADVANCEDTYPOGRAPHYlParam = TO_ADVANCEDTYPOGRAPHY 将消息EM_SETTYPEPOGRAPHYOPTIONS 发送到控件,然后使用PARAFORMATrgxTabs[ n ] += 0x2000000 进行右对齐。

    【讨论】:

      猜你喜欢
      • 2011-09-14
      • 1970-01-01
      • 2013-06-19
      • 2012-09-16
      • 1970-01-01
      • 2011-06-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-30
      相关资源
      最近更新 更多