我有包含孩子的主窗口。在孩子我需要处理鼠标滚轮滚动,但是滚动鼠标滚轮消息转到主窗口并不重要。我用Spy ++获得了这些结果。
不知道为什么会发生这种情况,但我认为儿童创造出了问题,我的代码:
m_window = CreateWindowEx(0, CustomTreeView::m_className.c_str(), NULL, WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL, x, y, width, height, parent, NULL, NULL, NULL);
答案 0 :(得分:7)
WM_MOUSEWHEEL
消息被发送到具有焦点的窗口(即,最后一个消息被SetFocus()
调用)。鼠标光标所在的位置无关紧要 - 消息将始终进入焦点窗口。
如果焦点窗口没有处理轮子消息,它将由DefWindowProc
传播到焦点窗口的父节点,再传播到其父节点,依此类推。因此,轮子消息仅移动向上窗口层次结构。
如果你想要一个没有输入焦点的子窗口来获取轮子信息,那么你需要安排自己转发它们。
如果你这样做,你应该通过不同的消息来做,以避免无限循环的可能性。