gpt4 book ai didi

c++ - OnVScroll:是从CSpinButtonCtrl还是Vertical ScrollBar调用?

转载 作者:行者123 更新时间:2023-12-02 10:15:34 36 4
gpt4 key购买 nike

我有一个派生的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还是滚动条?

环境详细信息:
  • Windows 7
  • Visual Studio 2010
  • MFC
  • 最佳答案

    如果OnVScroll处理程序是通过窗口(框架提供的)滚动条中的操作调用的,则pScrollBar参数将为NULL;如果来自控件,则不会是NULL。从CWnd Documentation:

    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.



    因此,您只需检查 NULL值即可:

    void CMyFormView :: OnVScroll (UINT nSBCode, UINT nPos, CScrollBar * pScrollBar)
    {
    if (!pScrollBar) {
    // From window's scrollbar...
    }
    else {
    // From a control...
    }
    }

    关于c++ - OnVScroll:是从CSpinButtonCtrl还是Vertical ScrollBar调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62103328/

    36 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com