Я создал подкласс CListCtrl в своем собственном классе и использую его в нескольких диалогах и представлениях. Я хочу выполнить некоторый код, когда ClistCtrl прокручивается вертикально. Мне нужно, чтобы это было в самом подклассе CListCtrl.
Я могу обнаружить прокрутку, запускаемую при взаимодействии с полосой прокрутки, с помощью метода, предоставленного demoncodemonkey:
карта сообщений:
BEGIN_MESSAGE_MAP(CMyListCtrl, CListCtrl)
ON_WM_VSCROLL()
END_MESSAGE_MAP()
объявление метода:
class CMyListCtrl : public CListCtrl
{
//...
protected:
afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
DECLARE_MESSAGE_MAP()
};
реализация метода:
void CMyListCtrl::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
//do some stuff here
CListCtrl::OnVScroll(nSBCode, nPos, pScrollBar);
}
Но:
Прокрутка колесика мыши не запускает OnVScroll.
Автоматическая прокрутка, происходящая при щелчке элемента CListCtrl, частично видимого внизу (он прокручивается вверх, чтобы элемент был полностью видим), также не запускал OnVScroll. Например:
При нажатии на элемент 9 ClistCtrl немного прокручивается, чтобы элемент был полностью виден.