自定义编辑框是登陆界面经常用到的效果,所以我也模仿站酷网的素材做了个

要想继承CCustomDraw来完全自绘CEdit控件,是不太可行的方案,因为一旦你完全重绘,那么你需要额外做以下几件事:

1. CEdit光标的处理;

2. 当是密码提示时,需要弹窗提示用户大写打开。

3. 需要处理窗口文字的滚动。

这样一来,工作量会很大,而且效果也不一定好。

我这里想到相对比较好的解决方案是:子窗口+透明边框的CEdit。子窗口负责皮肤的绘制,而CEdit负责处理用户的输入。这样一来,可以利用到CEdit原有的一些特性,以保证原有的效果,并减轻我们开发的工作量。

如下图的密码输入框侦测到用户键盘大写打开时,CEdit也会提示用户大写已经打开:

CEdit制作透明背景的方式是:

1. 子窗口获取WM_CTLCOLOREDIT和WM_CTLCOLORSTATIC这两个消息,当CEdit为ReadOnly时会响应WM_CTLCOLORSTATIC。

2. 在这两个消息中,返回背景画刷。

 LRESULT OnCtlColorEdit(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& /*bHandled*/){CDCHandle dc( (HDC) wParam );dc.SetTextColor(m_clrText);dc.SetBkMode(TRANSPARENT);// The AtlGetBackgroundBrush will repaint window.if( m_brEditBack.m_GDIBrush.m_hBrush == NULL ) {m_brEditBack.GetBackGroundBrush(m_Edit.m_hWnd, m_hWnd);}return (LRESULT)m_brEditBack.m_GDIBrush.m_hBrush;}

总结了下,有些Windows控件看起来简单,但要想完全实现其效果,也得花很多功夫。能利用Windows现有的东西就尽量利用,不要一直想着完全重写。

本文源码下载链接:http://download.csdn.net/detail/renstarone/6399469

VC++界面编程之--自定义CEdit(编辑框)皮肤相关推荐

  1. vc 界面编程常用方法 listctrl toolbar

      vc 界面编程常用方法收藏 新一篇: Building SQLite3 with Visual Studio 2005 | 旧一篇: Visual Studio 2005 IDE 技巧和窍门 &l ...

  2. VC++界面编程之--动态安装字体(CFont)

    1. 起因: 在界面编程时,我们经常需要用到自定义字体,来使自己的界面更美观.可要是别人电脑上没有你预定义的字体就麻烦了,你的界面字体会被Windows默认字体所取代,然后控件变形.错位等等问题会接踵 ...

  3. VC++界面编程之--实现一个画板并提供文字输入功能(MsPaint)

    画板的实现非常有趣,首先要新建一张HBITMAP来保存原来的绘制内容,然后需要创建一个可拉伸的输入框,供用户输入文字.必要时还得提供UnDo功能,供用户取消上一次绘制的功能. 利用业余时间,我制作了一 ...

  4. VC++界面编程之--使用分层窗口实现界面皮肤

    使用分层界面来实现界面皮肤的好处是:可以保证图片边缘处理不失真,且能用于异形窗口上,如一些不规则的窗口,你很难用SetWindowRgn来达到理想效果. 在很多情况下,界面的漂亮与否,取决于PS的制作 ...

  5. Vc 界面编程常用方法

    (http://blog.emuch.net/244485/spacelist-blog-itemtypeid-2708.html) http://blog.csdn.net/guanchanghui ...

  6. VC界面编程skill tips-CListCtrl

    CListCtrl 使用技巧 作者:lixiaosan 时间:04/06/2006 以下未经说明,listctrl默认view 风格为report 相关类及处理函数 MFC:CListCtrl类 SD ...

  7. vc 界面编程常用方法(http://blog.emuch.net/244485/spacelist-blog-itemtypeid-2708.html)

    CListCtrl 使用技巧 2007-09-24 13:53:39 [原]CListCtrl 使用技巧 作者:lixiaosan 时间:04/06/2006 以下未经说明,listctrl默认vie ...

  8. 弹出输入法软键盘,编辑框悬浮,及覆盖遮挡问题的解决

    2015年10月29日 谷歌果然好,一搜就找到清晰答案 软键盘遮挡的四种解决方法 首先效果一:adjustPan 效果二:adjustResize, 实现方法:该activity使用相对布局,自定义一 ...

  9. VC++ 单文档的状态栏编程、CEditView类实现编辑器功能、编辑框显示行号列号

    Win10 企业版:VC6: 新建一个单文档工程:默认的视图类的基类是CView:选择CEditView类作为,看一下生成的效果: 构建一下:运行:以CEditView作为基类,生成的应用程序具有编辑 ...

最新文章

  1. 目标检测之Faster-RCNN的pytorch代码详解(数据预处理篇)
  2. ALSM_EXCEL_TO_INTERNAL_TABLE
  3. 江苏有线门户网站服务器地址,江苏有线手机客户端的登录服务器
  4. PyTorch教程(五):Broadcasting
  5. NLG模块实现(未完成)
  6. 【Arduino】使用C#实现Arduino与电脑进行串行通讯
  7. 动态规划——矩阵连乘(算法设计课题)
  8. 处于停机等非正常状态_关于消防栓稳压泵不停机故障的思考
  9. Myeclipse学习总结(16)——MyEclipse CI 2018.8.0首次更新,全新来袭!(内附破解激活文件,亲测破解100%)
  10. windows 下nodejs 升级无法通过n模块升级
  11. Thrift搭建分布式微服务(四)
  12. 调用平安银行接口返回GBK乱码问题
  13. 尚学堂高淇python课件代码_尚学堂高淇Python400集全套视频教程百度云网盘分享
  14. 今日头条如何赚钱,今日头条赚钱规则,今日头条快速赚钱技巧
  15. 配置微软Azure Kinect DK 录制器k4arecorder
  16. 经典网页三剑客html、css 和 JavaScript实现的导航网页
  17. 移动端车牌识别,交警助力
  18. 阿里云因发现Log4j2 核弹级漏洞,未及时上报,被工信部处罚。。
  19. 高三班主任写给学生的一封信(在读大学的要看完)
  20. 鼠标计算机无法识别,计算机无法识别usb鼠标

热门文章

  1. 旷视天元 MegEngine 开源 CUDA INT4 量化源码实现
  2. 连接板的优化设计-workbench结构优化设计
  3. 学编程前博主是做测试的,当初在测试部作为一个小官还写了不少流程呢,今天突然翻到来跟大家分享一下测试流程(之测试内部流程)
  4. 支付宝小程序开发与注意事项
  5. CANalyzer添加CAN IG
  6. xp安全模式下如何修复计算机,电脑怎么进入安全模式,小编教你xp系统进入安全模式的方法...
  7. android检测张嘴眨眼,Android/IOS 活体检测(眨眼,摇头,点头,张嘴,远近)
  8. vue项目使用大华摄像头怎样初始化_vue项目初始化步骤
  9. 基于安卓大学生兼职APP设计与实现
  10. 安装 ThinkCMF