是的,我们在复杂控件上花了些曲折.其实不应该按照 "简单/复杂" 来对控件分类,而是应该按微软定的 "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等, 否则就无法兼容前期开发时没有用图片的灰色控件了.
OWNER DRAW / CUSTUM DRAW
最新推荐文章于 2022-04-09 23:28:04 发布
本文探讨了控件绘制的两种方式:OWNERDRAW与CUSTOMDRAW,并详细介绍了CUSTOMDRAW中TrackBar控件的具体实现步骤,包括资源ID获取、窗口句柄设置、自定义窗口过程函数设置及兼容性考虑。
开发板推荐:天空星STM32F407VET6开发板
超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印
开发板推荐:天空星STM32F407VET6开发板
超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

1346

被折叠的 条评论
为什么被折叠?



