Привет всем,
Пишу контрол на базе CCheckListViewCtrlImpl и CCustomDraw для ППК.
Контрол имеет две колонны "check box", вторую колонну деляю на базe
CButton::Create(m_hWnd, rcDefault, 0, WS_VISIBLE |WS_CHILD | BS_AUTOCHECKBOX | BS_LEFTTEXT)
для отрисовки
в OnSubItemPrePaint( int idCtrl, LPNMCUSTOMDRAW lpNMCustomDraw )
{
...
int nItem = lpNMCustomDraw->dwItemSpec;
int nSubItem = pLvCustomDraw->iSubItem;
...
pOperationButton = GetOperation(nItem); // "check box"
CRect rc;
GetSubItemRect(nItem ,
nSubItem , LVIR_BOUNDS, &rc);
rc.DeflateRect(2, 2, 2, 2);
pOperationButton->SetWindowPos(NULL, &rc, SWP_SHOWWINDOW | SWP_NOZORDER);
return CDRF_SKIPDEFAULT;
}
Проблема заклучается в том когда контрол нужно скролировать мои "собственные check box" не перимещаются по вертикале
по горизонтале работает нормално если не было перемещения по вертикале .
пробовал тупо в
MSG_WM_VSCROLL(OnVScroll)
что то типа
if(SB_ENDSCROLL == nSBCode )
{
RedrawItems(0, GetItemCount());
}
Может делать такое количество "check box" сколко видимых линий в моем листе ?
Куда мне копать