list ctrl控件添加滚动条响应事件,如何调用事件添加代码?
vc.net给listctrl定义派生类class CReportCtrl : public CListCtrl
并添加滚动事件函数,如下:
1。在消息映射里面添加对windows的消息接受处理:
BEGIN_MESSAGE_MAP(CListCtrlEx, CListCtrl)
ON_WM_VSCROLL()
ON_WM_HSCROLL()
END_MESSAGE_MAP()
2。在头文件添加消息处理函数
afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);
3。CPP中实现
void CListCtrlEx::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// todo
CWnd::OnVScroll(nSBCode, nPos, pScrollBar);
}
void CListCtrlEx::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// todo
CWnd::OnHScroll(nSBCode, nPos, pScrollBar);
}
在实例的窗口类中添加lsit control控件并添加控件变量CReportCtrl C_ConfigureList后,
请问如何调用OnVScroll和OnHScroll滚动事件,并在事件函数中添加代码。 --------------------编程问答-------------------- SendMessage
postmessage
--------------------编程问答-------------------- 能说具体点吗? --------------------编程问答-------------------- 你点击水平或者垂直滚动条的时候就能进入到OnHScroll 或者 OnVScroll 函数中去了, 在这个函数里做响应的操作,比如楼上说的发消息响应某些操作,或者直接就可以做你想要做的操作了 --------------------编程问答-------------------- 确实你这就是响应水平和垂直滚动条的消息都写出来了,你可以设个断点就知道能进入相应的函数,
void CListCtrlEx::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
if (nSBCode == SB_ENDSCROLL) //nSBCode可以判断 这里就是判断当滚动条操作结束后刷新 进入OnPaint()函数 不然点击滚动条时就会响应OnPaint()函数 这个函数会执行两次
::SendMessage();//消息操作一般是针对系统的 当然平常的也可以
也可以在这响应你想做的任何操作比如调用函数啊.
CWnd::OnHScroll(nSBCode, nPos, pScrollBar);
}
--------------------编程问答-------------------- void CListCtrlEx::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
if (nSBCode == SB_ENDSCROLL)
{
表示滚动条滚动结束后响应;不然点击滚动条时也会进入这个函数
}
CWnd::OnVScroll(nSBCode, nPos, pScrollBar);
}
补充:.NET技术 , VC.NET