我正在开发一个应用程序使用MFC库,我目前正试图防止用户在滚动鼠标滚轮时意外更改其中一个组合框控件。防止鼠标滚轮滚动的控件
我正在寻找一个解决方案,而不从CComboBox
类派生一个新类,并防止在那里滚动鼠标。
我对系统的理解是,Windows将WM_MOUSEWHEEL
消息传递给处理它的组合框控件(滚动组合框),然后传播到父控件链(所以它们到我的CFormView
等) ,这意味着我无法通过捕获表单视图中的事件来防止滚动。
有没有人有解决这个问题的办法?提前致谢!
我正在开发一个应用程序使用MFC库,我目前正试图防止用户在滚动鼠标滚轮时意外更改其中一个组合框控件。防止鼠标滚轮滚动的控件
我正在寻找一个解决方案,而不从CComboBox
类派生一个新类,并防止在那里滚动鼠标。
我对系统的理解是,Windows将WM_MOUSEWHEEL
消息传递给处理它的组合框控件(滚动组合框),然后传播到父控件链(所以它们到我的CFormView
等) ,这意味着我无法通过捕获表单视图中的事件来防止滚动。
有没有人有解决这个问题的办法?提前致谢!
覆盖主窗口类中的PreTranslateMessage处理程序并查找WM_MOUSEWHEEL消息。将PreTranslateMessage处理程序中的pMsg-> hwnd句柄与组合框句柄进行比较,如果找到,则将其过滤掉。
您始终可以从CComboBox
获取控件并将WM_MOUSEWHEEL
消息捕获到控件本身中。然后只需在窗体视图中使用新的派生组合框。
如果您不想创建派生类(可能对您的项目而言变化太大),则可以继承组合框并在其中捕获WM_MOUSEWHEEL
。
感谢编辑雷蒙德。我没有考虑将组合框的子类别作为替代方案。 – 2013-02-22 19:41:08