我创建了一个编辑框:
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,用于水平文本对齐,但是我们可以将文本垂直居中对齐吗?
答案 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
可以实现正确的垂直居中,尽管很明显,我们的视觉风格与客户指定的风格略有不同。对我来说,我可以忍受这个小小的折衷,而不是编写一个自定义编辑控件。