【问题标题】:how to left justify title text VS C++如何左对齐标题文本VS C++
【发布时间】:2018-04-12 01:09:41
【问题描述】:

我正在尝试修改在 Visual Studio 下用 C++ 编写的现有基于对话框的程序。

对话框上的标题栏显示居中文本。我需要这样做是合理的。但我无法弄清楚为什么它首先是居中的。我编写了另一个示例程序,默认情况下标题文本是左对齐的。对话框属性中的一个选项是右亮文本。这在我的示例程序中有效,但在现有程序中更改它没有效果。

似乎有人必须努力使文本居中,但我在代码中看不到任何内容,如果事实上,居中(或我的示例/测试程序中的右对齐)显示在对话框编辑器。所以它必须在那里的属性中。但是在哪里!?!?!

这是必须简单的事情之一,我没有看到它!

那么我如何左对齐标题文本?我什至很乐意用代码来做,因为我已经在修改标题以在其中添加程序版本号。顺便说一句,当我添加到标题或换入新标题时,该文本最终会居中。

【问题讨论】:

  • 看起来您可能想要寻找处理WM_NCPAINT message 的代码。这是一篇(尽管相对较旧的)文章,其中他们自定义了对话框标题栏:Custom Titlebar
  • @CraftedGaming,setw 似乎不适用于这种情况。
  • @PhilBrubaker,是的,这可能是“正确”的方法,但付出的努力超出了保证。不过谢谢!
  • @ElRonaldo 不客气,很高兴你找到了一个可以接受的解决方法。

标签: c++ visual-studio visual-studio-2010 titlebar


【解决方案1】:

所以这不是一个真正的答案,但我的“问题”是我正在比较在 Win10 和 Win8 上运行的程序。事实证明,Win10 的默认值必须是左对齐标题,而 Win8 的默认值是居中。

我以编程方式将版本号添加到标题中,而 Win8 中的居中过程显然不是动态的,因此结果向右倾斜。我的解决方案是简单地将版本号中的字符数添加到原始标题中,当我添加版本号时,我会修剪掉那些空格。

WM_NCPAINT 可能是“正确”的答案,但在时间方面可能过于昂贵。

【讨论】:

    【解决方案2】:

    使文本居中的技巧是重写 WM_NCPAINT 事件as given in this link

    如果您不想使文本居中,请删除覆盖,它应该可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-02
      • 1970-01-01
      • 1970-01-01
      • 2012-10-13
      • 2015-02-12
      • 2019-10-01
      • 1970-01-01
      • 2021-02-18
      相关资源
      最近更新 更多