【发布时间】:2009-09-21 21:21:23
【问题描述】:
我将 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 滚动一点,使该项完全可见。
【问题讨论】: