如何在WIN32 API中“通知”父窗口关于子窗口“列表框”控件的“滚动事件”?

时间:2013-08-15 12:32:46

标签: winapi listbox scroll notify

如何“通知”父窗口关于其子窗口的“滚动事件”“列表框”控件,每次在 WIN32 API

中向上或向下滚动

我正在尝试使用 WIN32 API 制作词典。我创建了一个父窗口,然后在其中创建了一个子窗口列表框控件。

我想一次将“50个单词列表”添加到数据库的列表框控件中,这样应用程序在启动期间根本不需要时间。

然后,我想跟踪“滚动条位置”“SCROLLINFO”结构的“nPos”值)当用户向上或向下滚动单词列表时,列表框控件,这样我就可以调用一个函数,当它几乎滚动到底部时,在列表框的末尾再添加50个单词。

主窗口程序功能中,在“switch”语句中,我使用了“WM_VSCROLL”窗口消息,希望抓住孩子窗口列表框控件的滚动事件。子窗口列表框控件具有“LBS_NOTIFY”样式。但都是徒劳的!列表框控件的滚动事件未通知其父窗口。父窗口也没有在“WM_VSCROLL”消息中为其子窗口列表框控件的滚动事件执行任何操作。

请帮助我,指导我,向我展示代码示例如何“通知”父窗口关于其子窗口的“滚动事件”“列表框”控件,每次在WIN32 API中向上或向下滚动。

1 个答案:

答案 0 :(得分:2)

滚动消息仅发送到实际滚动的窗口,在本例中为ListBox。 LBS_NOTIFY仅适用于少数选择消息,不包括滚动消息。您必须通过SetWindowLongPtr(GWL_WNDPROC)SetWindowSubclass()对ListBox进行子类化,并让子类过程捕获滚动消息并根据需要将信息转发到父窗口。