自绘编辑框CEdit(继承CEdit方式)
2015-12-09 17:11
260 查看
对于自定义控件, 我们可以这样理解: 我们要处理控件的行为和显示. 我这里的需求只需要自定义编辑框的显示即可, 行为则使用默认即可. 通过重载CEdit就可以实现.
例如:
你也可以贴图:
http://bbs.csdn.net/topics/340257075 http://bbs.csdn.net/topics/190119634 http://blog.csdn.net/xianglitian/article/details/1728920
1. 主要实现内容
显示主要有: 边框, 背景, 文字颜色, 禁用态的各种颜色.2. 边框
边框可以通过重载OnNCPaint实现.例如:
void CMyEdit::OnNcpaint() { CRect rect, rc; CDC* pDC; int nSaveDC; pDC = GetWindowDC(); GetWindowRect(&rect); rect -= rect.TopLoeft(); rc = rect; rc.InflateRect(-GetSystemMetrics(SM_CXEDGE), -GetSystemMetrics(SM_CYEDGE)); nSaveDC = pDC->SaveDC(); pDC->ExcludeClipRect(&rc); pDC->FillSolidRect(&rect, RGB(255,255,255)); pDC->RestoreDC(nSaveDC); pDC->FrameRect(&rect, &CBrush(150,150,150)); ReleaseDC(pDC); }
3. 背景
背景可以通过重载OnEraseBkgnd实现BOOL CMyEdit::OnEraseBkgnd(CDC* pDC) { // TODO: Add your message handler code here and/or call default return 0; return CEdit::OnEraseBkgnd(pDC); }
你也可以贴图:
BOOL CMyEdit::OnEraseBkgnd(CDC* pDC) { //TODO: 在此添加消息处理程序代码和/或调用默认值 CDC memDC; memDC.CreateCompatibleDC(pDC); memDC.SelectObject(&m_Bitmap); BITMAP m_Bmp; m_Bitmap.GetBitmap(&m_Bmp); CRect rect; GetClientRect(&rect); //拉伸贴图 pDC->StretchBlt(0,0,rect.Width() ,rect.Height(),&memDC,0,0,m_Bmp.bmWidth,m_Bmp.bmHeight,SRCCOPY); memDC.DeleteDC(); return TRUE; //return CEdit::OnEraseBkgnd(pDC); }
4. 字体颜色
HBRUSH CMyEdit::CtlColor(CDC* pDC, UINT nCtlColor) { pDC->SetBkMode(TRANSPARENT); // 透明 pDC->SetTextColor(RGB(255, 255, 255)); // 字体色彩 return (HBRUSH)GetStockObject(DKGRAY_BRUSH); // 字体背景(OnEraseBkgnd只是避免闪烁) }
5. 小结
通过重载这几个函数, 就实现了编辑框显示的自绘.http://bbs.csdn.net/topics/340257075 http://bbs.csdn.net/topics/190119634 http://blog.csdn.net/xianglitian/article/details/1728920
相关文章推荐
- Android 反射实战 - 更换APP皮肤<2>
- exit2/ext3文件系统介绍
- mac 安装python软件包的工具--easy_install
- c++实现的快速排序算法
- 使用系统时间作为创建的文件名
- muduo源码分析:无界队列和有界队列(消费者-生产者)
- UART0串口编程系列 串口编程(UART0)之中断方式(一)
- iOS 分享功能开发
- 常见的七大排序算法Java实现
- Oracle 10g
- 模板字符串
- iOS 获取 UITabViewController 和 UINavigationController 的图标位置
- 179. Largest Number(INT, String)
- underscore api 概览
- Spring 配置中的 default-lazy-init="false"
- 最简单的matplotlib安装和使用
- 最简单的matplotlib安装和使用
- Data Structure(1-6)---单链表的整表创建
- gdal 图像金字塔
- 【BZOJ 1001】狼抓兔子 对偶图+SPFA