1

如何在WIN32 API中每次向上或向下滚动时“通知”父窗口其子窗口的“滚动事件”,一个“列表框”控件?

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

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

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

主窗口过程函数中,在“switch”语句中,我使用了“WM_VSCROLL”窗口消息,希望能捕捉到子窗口列表框控件的滚动事件。子窗口列表框控件具有“LBS_NOTIFY”样式。但一切都是徒劳的!列表框控件的滚动事件未通知其父窗口。父窗口在其子窗口列表框控件的滚动事件的“WM_VSCROLL”消息中也没有做任何事情。

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

4

1 回答 1

2

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

于 2013-08-15T18:56:13.263 回答