先前我写了一篇关于窗口滚动条的博客,链接是 http://blog.csdn.net/zhongjling/article/details/7796932
对于滚动条控件,其实也用的很多的。链接是 http://www.jizhuomi.com/software/191.html。
窗口滚动条与滚动条控件二者的使用步骤当然有所不同,但是注意,二者响应滑条滚动时,都是响应的 WM_HSCROLL消息,使用OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 作为消息响应函数的。那么如果一个窗口里,既有窗口滑条,又有控件滑条,系统如何区分用户到底在操作哪一类滑条?(WM_VSCROLL 类似,不叙)
经过查找,发现以下解释是合理的:
区别在于OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 里的参数pScrollBar。
If the scroll message came from a scroll-bar control, contains a pointer to the control. If the user clicked a window's scroll bar, this parameter is NULL. The pointer may be temporary and should not be stored for later use.
滚动条控件(CScrollBar)发送WM_HSCROLL消息时pScrollBar是指向控件的指针。
如果是窗口的滚动条,pScrollBar就是NULL。经测试,确实如此!
参见 http://emuch.net/html/201011/2526841.html
另外注意一点:
WM_HSCROLL 与 Releasecapture响应是不一样的,前者是立刻马上、后者是释放鼠标后见效。