专门做界面已经有半年了,期间用得最多也就是Owner Draw,对于Cutom Draw只是知之一二,没有具体用过,其实Ower Draw用得最多也就是Button,ListBox两个,由于项目中有个同事把TreeCtrl进行Custom Draw了,效果很不错,这才意识到其强大及易用,相比较而言Ower Draw就复杂多了,今天再次把CP上那篇经典的关于Custom Draw文章看了一篇,用了半个小时写了Slider的Custom Draw,也算是为了练习使用WTL和GDI+:

class CCDSliderCtrl : public CWindowImpl<CCDSliderCtrl,CTrackBarCtrl>, public CCustomDraw<CCDSliderCtrl> { public: BEGIN_MSG_MAP(CCDSliderCtrl) CHAIN_MSG_MAP_ALT(CCustomDraw< CCDSliderCtrl >, 1) DEFAULT_REFLECTION_HANDLER() END_MSG_MAP() public: CCDSliderCtrl():m_pImageThumb(NULL),m_pImageChannel(NULL) { } ~CCDSliderCtrl() { if (NULL!=m_pImageThumb) { delete m_pImageThumb; m_pImageThumb=NULL; } if (NULL!=m_pImageChannel) { delete m_pImageChannel; m_pImageChannel=NULL; } } void SetImage(LPCTSTR lpszThumb,LPCTSTR lpszChannel) { if (NULL!=m_pImageThumb) { delete m_pImageThumb; m_pImageThumb=NULL; } m_pImageThumb=new Image((WCHAR*)lpszThumb); if (NULL!=m_pImageChannel) { delete m_pImageChannel; m_pImageChannel=NULL; } m_pImageChannel=new Image((WCHAR*)lpszChannel); } DWORD OnPrePaint( int idCtrl, LPNMCUSTOMDRAW lpNMCustomDraw ) { return CDRF_NOTIFYITEMDRAW; } DWORD OnItemPrePaint( int idCtrl, LPNMCUSTOMDRAW lpNMCustomDraw ) { Graphics graphics(lpNMCustomDraw->hdc); CRect rcThumb(lpNMCustomDraw->rc); switch ( lpNMCustomDraw->dwItemSpec ) { case TBCD_CHANNEL: { CRect rcClient; GetClientRect( &rcClient); ImageAttributes imAtt; imAtt.SetColorKey( Color(255, 0,255), Color(255, 0,255), ColorAdjustTypeBitmap); graphics.DrawImage( m_pImageChannel, Rect(0, 0, rcClient.Width(),rcClient.Height()), // dest rect 0, 0, m_pImageChannel->GetWidth(),m_pImageChannel->GetHeight(), // source rect UnitPixel, &imAtt); break; } case TBCD_TICS: return CDRF_DODEFAULT; case TBCD_THUMB: { graphics.DrawImage(m_pImageThumb,Rect(rcThumb.left,rcThumb.top,rcThumb.Width(),rcThumb.Height())); break; } default: ATLASSERT( FALSE ); }; return CDRF_SKIPDEFAULT; } protected: Gdiplus::Image* m_pImageThumb; Gdiplus::Image* m_pImageChannel; };

下面是效果图:

Neat Stuff Custom Draw相关推荐

  1. Custom Draw

    common control 4.7版本介绍了一个新的特性叫做Custom Draw,这个名字显得模糊不清,让人有点摸不着头脑,而且MSDN里也只给出了一些如风的解释和例子,没有谁告诉你你想知道的,和 ...

  2. 【第3版emWin教程】第8章 emWin6.x的带OS方式移植(STM32H7之RGB接口)

    教程不断更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第8章   emWin6.x的带OS方式移植(STM32H7之R ...

  3. VC/MFC QA 200407

    CSDN 讨论总结系列: Jiangsheng的CSDN Digest (Dec 2005)(http://blog.csdn.net/jiangsheng/archive/2005/12/24/56 ...

  4. Windows Vista for Developers——第三部分补充:控件和桌面窗口管理器

    作者:Kenny Kerr 翻译:Dflying Chen 原文:http://weblogs.asp.net/kennykerr/archive/2007/01/23/controls-and-th ...

  5. TeeChart.Direct2D.dll的使用

    这个dll本身依赖于第三方的控件,SlimDX ,可以从 http://slimdx.org/ 下载.  .net4.0的版本区分x86和x64 帧数的概念 我们通常说帧数,简单地说,就是在1秒钟时间 ...

  6. 王哲:Cocos2d-x 3.0引擎带来了什么?

    触控科技近日发布了Cocos2d-x3.0RC版本,主打开放.原生.创新路线.作为全球三大游戏引擎之一,Cocos2d-x吸引了国内外一批优秀的开发者和游戏作品,包括<放开那三国>.< ...

  7. 设置ListCtrl列表控件其中某一行的字体和背景颜色

    设置ListCtrl列表控件其中某一行的字体和背景颜色,可以最终达到如下效果: 操作步骤如下所示: 1.先添加一个自定义消息 ON_NOTIFY ( NM_CUSTOMDRAW,IDC_V_H264_ ...

  8. 2g内存用linux的哪个版本,Linux 下安装sql server 时 2G内存限制的最新(2019-08-15) 解决方案...

    关于 sqlserver 在linux下安装时有最小内存限制的问题,网上有很多类似的说明,那些操作都是正确的,如果不成功可能 "姿势"不对. 需要注意的是:不能使用最新版本!!!  ...

  9. NM_CUSTOMDRAW消息

    common control 4.7版本介绍了一个新的特性叫做Custom Draw,这个名字显得模糊不清,让人有点摸不着头脑,而且MSDN里也只给出了一些如风的解释和例子,没有谁告诉你你想知道的,和 ...

最新文章

  1. Attribute 绑定、类绑定和样式绑定
  2. 管理软件预警通知(Notification)功能的实现案例分析
  3. 你不曾见过的酷炫地图可视化作品(一)
  4. Hibernate @OneToMany 及 @Cascade级联操作
  5. RHEL4-VNC服务配置
  6. 匿名内部类与Lambda表达式习题
  7. CSS3 box-shadow 属性
  8. 【Python】Python3.7.3 - Collections (Arrays) - List数据类型
  9. C++共享内存类封装
  10. JMeter测试实例
  11. L2TP的LAC自动拨号实验
  12. 计算机网络原理(04741)第1章:计算机网络概述
  13. 小程序如何访问未备案的 API
  14. 01.14_学习Java的day23(详解)
  15. VTK_Learning_交互与拾取_单位拾取
  16. ERP如何为企业带来效益?
  17. 股票level2数据接口获取逐笔成交数据的过程
  18. Postgressql获取当前系统的年份及上一年和下一年
  19. 我为什么信主---为主作见证
  20. 【数据库笔记】(一)数据库模式

热门文章

  1. 利用JAVA语言实现支持视频点播的WEB服务器
  2. Android模仿软键盘实现软键盘的删除功能(逐个删除EditText的输入元素)
  3. 差模信号、共模信号、共模抑制比的概念
  4. Openwrt中MT7628/MT7688的全部GPIO复用配置及常用接口DTS配置总结
  5. 几种MAPE的实现方式
  6. 兔子与兔子(BKDRhash)
  7. c#使用RRQMSocket实现tcp通信
  8. 哪种提词器好用?这个提词器工具分享给大家
  9. Linux文字转语音播报总结
  10. 【历史上的今天】11 月 10 日:初代 Windows 诞生;Word 之父出生;Go 语言发布