如何“通知”父窗口关于其子窗口的“滚动事件”,“列表框”控件,每次在 WIN32 API ?
中向上或向下滚动我正在尝试使用 WIN32 API 制作词典。我创建了一个父窗口,然后在其中创建了一个子窗口列表框控件。
我想一次将“50个单词列表”添加到数据库的列表框控件中,这样应用程序在启动期间根本不需要时间。
然后,我想跟踪“滚动条位置”(“SCROLLINFO”结构的“nPos”值)当用户向上或向下滚动单词列表时,列表框控件,这样我就可以调用一个函数,当它几乎滚动到底部时,在列表框的末尾再添加50个单词。
在主窗口程序功能中,在“switch”语句中,我使用了“WM_VSCROLL”窗口消息,希望抓住孩子窗口列表框控件的滚动事件。子窗口列表框控件具有“LBS_NOTIFY”样式。但都是徒劳的!列表框控件的滚动事件未通知其父窗口。父窗口也没有在“WM_VSCROLL”消息中为其子窗口列表框控件的滚动事件执行任何操作。
请帮助我,指导我,向我展示代码示例如何“通知”父窗口关于其子窗口的“滚动事件”, “列表框”控件,每次在WIN32 API中向上或向下滚动。
答案 0 :(得分:2)
滚动消息仅发送到实际滚动的窗口,在本例中为ListBox。 LBS_NOTIFY
仅适用于少数选择消息,不包括滚动消息。您必须通过SetWindowLongPtr(GWL_WNDPROC)
或SetWindowSubclass()
对ListBox进行子类化,并让子类过程捕获滚动消息并根据需要将信息转发到父窗口。