不同的窗口、控件,需要在不同的地方绘制.
1.按钮(Button)、菜单、标签、列表框(ListBox)、TabCtrl等,在WM_DRAWITEM绘制
2.列表视图(ListCtrl)在WM_NOTIFY(NM_CUSTOMDRAW)绘制
3.单选按钮(RADIOBUTTON)多选按钮(CHECKBOX)在WM_NOTIFY(NM_CUSTOMDRAW)绘制
4.顶级窗口、以及其他一些控件,可以在WM_ERASEBKGND、WM_PAINT绘制
5.非客户区(标题栏、边框)在WM_NCPAINT绘制
6.WM_DRAWITEM、WM_NOTIFY是发送给控件父窗口的
7.WM_ERASEBKGND、WM_PAINT、WM_NCPAINT是发给窗口/控件自身的
部分控件自绘样式(使用SetWindowLong修改):
1.按钮(Button)——– BS_OWNERDRAW
2.标签(Static)——– SS_OWNERDRAW
3.菜单—————- MF_OWNERDRAW
4.列表框(ListBox)—– LBS_OWNERDRAWFIXED、LBS_OWNERDRAWVARIABLE
5.列表视图(ListCtrl)– LVS_OWNERDRAWFIXED