我们如何在编辑框中垂直对齐文字?

时间:2009-05-15 06:14:27

标签: c++ mfc

我创建了一个编辑框:

m_EditWnd.Create(m_hWnd, rect, NULL, ES_LEFT | ES_AUTOHSCROLL | WS_CHILD |
                                     WS_OVERLAPPED | WS_VISIBLE,
                 WS_EX_CLIENTEDGE | WS_EX_LEFT | WS_EX_LTRREADING);

水平对齐的样式为ES_CENTER,用于水平文本对齐,但是我们可以将文本垂直居中对齐吗?

2 个答案:

答案 0 :(得分:1)

我尝试了@Aidan Ryan的解决方案,进行了一些小调整以避免另一个与UI相关的问题。我移动了#34; SetWindowPos"进入OnNCPaint()并只调用一次函数。

答案 1 :(得分:1)

我没有足够的声誉来发表评论,所以这是一个非常老的问题的有用摘录!

如果提供WS_BORDER样式,则文本将根据要求自动垂直居中。由于OP正在使用WS_EX_CLIENTEDGE,所以无论如何都会绘制边框 ,因此添加这种样式应该不是问题。

但是,WS_BORDER | WS_EX_CLIENTEDGE仅实现“部分”垂直居中。

使用WS_BORDER | WS_EX_STATICEDGE可以实现正确的垂直居中,尽管很明显,我们的视觉风格与客户指定的风格略有不同。对我来说,我可以忍受这个小小的折衷,而不是编写一个自定义编辑控件。