我有一个派生的MFC CFormView
类(CMyFormView
),我必须实现自己的OnVScroll
函数。
我的CMyFormView
用于多个对话框资源,主要用于重新实现OnCtlColor()
函数。一些对话框包含CSpinButtonCtrl
控件。
我的问题:
当OnVScroll
函数被调用时,我不知道Windows消息是来自CSpinButtonCtrl
还是来自滚动条。
void CMyFormView :: OnVScroll (UINT nSBCode, UINT nPos, CScrollBar * pScrollBar)
{
// message comes from CSpinButtonCtrl or VscrollBare ?
}
我不能使用控件的
CSpinButtonCtrl
ID(dlgitem),因为它们很多。问题:
如何知道消息是来自
CSpinButtonCtrl
还是滚动条?环境详细信息:
最佳答案
如果OnVScroll
处理程序是通过窗口(框架提供的)滚动条中的操作调用的,则pScrollBar
参数将为NULL
;如果来自控件,则不会是NULL
。从CWnd Documentation:
因此,您只需检查NULL
值即可:
void CMyFormView :: OnVScroll (UINT nSBCode, UINT nPos, CScrollBar * pScrollBar)
{
if (!pScrollBar) {
// From window's scrollbar...
}
else {
// From a control...
}
}