CListViewCtrl scroll
От: vassilux Франция  
Дата: 23.03.09 09:35
Оценка:
Привет всем,
Пишу контрол на базе 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" сколко видимых линий в моем листе ?


Куда мне копать
Re: CListViewCtrl scroll
От: vassilux Франция  
Дата: 23.03.09 15:47
Оценка:
Нашел способ , перехватывать WM_VSCROLL м WM_HSCROLL
прятать видимые "check box" и в OnSubItemPrePaint как и было
Вроде работает не плохо м может есть все таки идеи по умнее ?


Здравствуйте, vassilux, Вы писали:

V>Привет всем,

V>Пишу контрол на базе CCheckListViewCtrlImpl и CCustomDraw для ППК.
V>Контрол имеет две колонны "check box", вторую колонну деляю на базe
V>
V>CButton::Create(m_hWnd, rcDefault, 0, WS_VISIBLE |WS_CHILD | BS_AUTOCHECKBOX | BS_LEFTTEXT) 
V>

V>для отрисовки
V>в OnSubItemPrePaint( int idCtrl, LPNMCUSTOMDRAW lpNMCustomDraw )
V>{
V>...
V>int nItem = lpNMCustomDraw->dwItemSpec;
V>int nSubItem = pLvCustomDraw->iSubItem;
V>...
V>pOperationButton = GetOperation(nItem); // "check box"
V>CRect rc;
V>GetSubItemRect(nItem ,
V>nSubItem , LVIR_BOUNDS, &rc);
V>rc.DeflateRect(2, 2, 2, 2);
V>pOperationButton->SetWindowPos(NULL, &rc, SWP_SHOWWINDOW | SWP_NOZORDER);
V>return CDRF_SKIPDEFAULT;
V>}
V>


V>Проблема заклучается в том когда контрол нужно скролировать мои "собственные check box" не перимещаются по вертикале

V>по горизонтале работает нормално если не было перемещения по вертикале .
V>пробовал тупо в
V>
V>MSG_WM_VSCROLL(OnVScroll)

V>


V>что то типа

V>
V>if(SB_ENDSCROLL == nSBCode )
V>{
V>RedrawItems(0, GetItemCount());
V>}
V>


V>Может делать такое количество "check box" сколко видимых линий в моем листе ?



V>Куда мне копать
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.