自绘CListCtrl时发现ON_WM_MEASUREITEM_REFLECT和DrawItem(LPDRAWITEMSTRUCT lpMeasureItemStruct) 无响应
一般情况下,我们都是在 dialog 里面 放一个 list 控件,然后 用自己的类绑定自己的自绘对象,如同下面:
1. 在 dialog 里面 加一个 list 列表
2. 然后 绑定这个列表
哈哈,那么恭喜你,你的自绘 CListCtrl 控件 重写的ON_WM_MEASUREITEM_REFLECT和DrawItem(LPDRAWITEMSTRUCT lpMeasureItemStruct) 无响应的。
为什么呢? 自己想吧,其他不多说,只是 MFC 的机制很日怪!
给出正确的做法吧,在 dialog 里面 去掉 list, 在去掉 DDX_Control(pDX, IDC_LIST_Glass, m_glassListCtrl);
然后在 适当的地方加上,比如下面:
BOOL CPickingPanel::OnInitDialog()
{
CBackgroundDlg::OnInitDialog();
DWORD dwListStyle = WS_VISIBLE | WS_CHILD | LVS_REPORT | LVS_OWNERDRAWFIXED;
if (m_list.Create(dwListStyle, CRect(0, 0, 0, 0), this, 0) == -1)
return FALSE;
....
现在 你从 CMFCCtrlList 的子类 就可以 重绘了。