OWNER DRAW / CUSTUM DRAW

是的,我们在复杂控件上花了些曲折.其实不应该按照 "简单/复杂" 来对控件分类,而是应该按微软定的 "OWNER DRAW / CUSTUM DRAW" 来分类. 这两种DRAW方式的具体解释可以在MSDN上找到. 对于OWNER DRAW,就是按照上文描述的方法, 对于CUSTOM DRAW, 比如我遇到的TrackBar, 处理方法是: 
(1) 从resource.h里获得该控件的resource id, 记为nResID 
(2) 控件窗体句柄 hItemWnd = GetDlgItem(hParentDlg, nResID) 
(3) 替换掉窗体的主处理函数 SetWindowLong( hItemWnd, GWL_WNDPROC, (LONG)MyProc ) 
(4) 实现自己的窗体处理函数. 在MyProc的WM_PAINT里面就可以做OWNER DRAW的所有事情了,不过对于MS定义的那些消息也得自己做响应, 比如对于TrackBar控件的TBM_SETRANGEMAX, TBM_SETPOS等, 否则就无法兼容前期开发时没有用图片的灰色控件了. 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值