Я подклассифицировал CListCtrl в свой класс, и я использую его в нескольких диалогах и представлениях. То, что я хочу сделать, это выполнить некоторый код, когда ClistCtrl прокручивается по вертикали. Мне нужно, чтобы это было в самом подклассе CListCtrl.Как поймать событие прокрутки в CListCtrl?
я могу обнаружить прокруткой срабатывать при взаимодействии с скроллинга с помощью метода, предоставленной demoncodemonkey:
messagemap:
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 либо. Например:
partialy visible item http://i37.tinypic.com/2guxtfn.png
Щелкнув по пункту 9 вызывает CListCtrl прокручивать немного, так что элемент полностью виден.
Было здорово обнаружить прокрутку прокрутки, мышь была проигнорирована, а автоматическая прокрутка, когда элемент CListCtrl, частично видимый снизу, щелкнул (он прокручивается, так что он полностью виден) тоже был проигнорирован. Я редактирую свой первоначальный вопрос, чтобы включить этот частичный ответ. благодаря! – rec
Я согласен с вами в том, что WM_VSCROLL не вызывается в этих обстоятельствах, однако если то, что я написал, ответил на ваш первоначальный вопрос, тогда вы должны были принять мой ответ, а затем задать другой вопрос. – demoncodemonkey