采用简单办法使Edit control中的文本垂直对齐

简介:

 Windows Shell提供的编辑控件Edit Control(注意不是Rich Edit)没有垂直对齐的风格,在这样的控件中显示文本时可以观察到文本总是顶端对齐,虽然说可以在WM_PAINT消息中绘制文本的位置,可以使其垂直对齐,但这样到鼠标的光标也不会垂直对齐,而且文字区域也不是中间对齐的。

  可以采用间接的办法做到使Edit control中的文本垂直对齐,其原理也很简单,创建Edit control的时候,使它的高度等于文本的高度(可以通过GetTextMetrics获取文本高度),这样文字能够充分填充Edit control的垂直空间,任谁也看不出来此刻是垂直对齐还是顶端对齐。
有些拆台的朋友可能会要求创建的Edit control高度( h)大于文本的高度,这种情况下可以先为Edit control创建一个父窗口,编辑控件的高度仍然等于文本的高度,然后将编辑控件放到其父窗口的中间(垂直方向)位置,其父窗口的高度设置为 h,然后Edit control和其父窗口的设置为相同颜色的背景,这样看起来Edit control中的文本还是中间对齐的。观察图(1),文本是垂直对齐吧,而且编辑控件的高度大于文本的高度。再观察图(2),绿色背景其实是Edit control的父窗口,白色背景才是Edit control。
图1
图2]
















本文转自jetyi51CTO博客,原文链接:http://blog.51cto.com/jetyi/594878  ,如需转载请自行联系原作者





相关文章
|
自然语言处理 安全 C++
【C++ 格式化输出 】C++20 现代C++格式化:拥抱std--format简化你的代码
【C++ 格式化输出 】C++20 现代C++格式化:拥抱std--format简化你的代码
9421 4
|
编译器 C语言 C++
右值引用,完美转发,NRVO 和RVO优化(简单易懂详细)
右值引用,完美转发,NRVO 和RVO优化(简单易懂详细)
1424 0
|
存储 Java
AQS(AbstractQueuedSynchronizer,队列同步器)源码解读
AQS(AbstractQueuedSynchronizer,队列同步器)源码解读
|
安全 Java
【深入理解同步器AQS】
【深入理解同步器AQS】
428 0
|
Python
wxPython StaticText控件背景色透明
wxPython StaticText控件背景色透明
285 0
|
编解码 Linux 编译器
使用 C++ 方式实现 GBK 到 UTF-8 转码 (win / linux)
使用 C++ 的方式处理在 Windows 平台和 Linux 平台,编码字符集从 GBK 到 UTF-8 转码,C++ 存在多种方式实现
4148 1
|
9月前
|
存储 弹性计算 数据挖掘
阿里云ECS云服务器经济型e实例和通用算力型u1实例区别对比、适用场景和问题解答FAQ
阿里云ECS云服务器的经济型e实例和通用算力型u1实例是开发者和中小企业常用的两种配置。e实例适合中小型网站、开发测试等轻量级应用,性价比高;u1实例性能更优,适用于中小型企业级应用、数据分析等场景。同等配置下,u1实例在网络带宽、云盘IOPS等方面表现更好,价格也相对较高。选择时,个人用户推荐e实例,中小企业则更适合u1实例
|
算法 Java 编译器
【C++ 关键字 virtual 】C++ virtual 关键字(将成员函数声明为虚函数实现多态
【C++ 关键字 virtual 】C++ virtual 关键字(将成员函数声明为虚函数实现多态
276 0
|
JavaScript 前端开发 测试技术
前端全栈之路Deno篇(五):如何快速创建 WebSocket 服务端应用 + 客户端应用 - 可能是2025最佳的Websocket全栈实时应用框架
本文介绍了如何使用Deno 2.0快速构建WebSocket全栈应用,包括服务端和客户端的创建。通过一个简单的代码示例,展示了Deno在WebSocket实现中的便捷与强大,无需额外依赖,即可轻松搭建具备基本功能的WebSocket应用。Deno 2.0被认为是最佳的WebSocket全栈应用JS运行时,适合全栈开发者学习和使用。
717 8
|
前端开发 JavaScript API
探索HTML中的元素关系:父元素、子元素、祖先元素与后代元素
探索HTML中的元素关系:父元素、子元素、祖先元素与后代元素
895 4