自绘是设计界面控件时最常用到的方法,不过这里也有区别,一种我称为加工自绘,就是继承标准控件,然后对标准控件加工改造,这种方法好处是成本低,实现快,坏处也显而易见,标准控件一些本身的问题也继承了下来。而且不容易解决。有的时候甚至祭出hook大法就是为了改造滚动条。这种方法最大的局限还在于有的时候根本改造不了,举个实际应用,比如qq的好友管理器 见图
我相信不管用listbox还是listview都未必能做到这个程度上,那么这里就有了一个更完全的自绘,就是直接在dc上模拟
所谓自绘其实说白了就是自己在dc上绘制,这也才是真正的绘制,其实微软的标准控件也是这样绘制出来的。
那么完全自绘唯一要注意的就是响应鼠标和键盘消息,这是界面控件最直接的联系目标。需要你自己来完成实现。偷懒的话大家可以把所有的图绘知道一个panel或image上这样消息就从这里走,当然区域判断,鼠标按下弹起,键盘输入这些还是要你自己做。都是体力活就不详细解释了
文章最后也给个最终效果
demo在这里