XP滚动条在Windows7 / Vista中变得混乱

时间:2011-12-31 04:37:50

标签: c++ winapi mfc windows-xp windows-vista

我有这个XP应用程序(win32 C ++),我现在正在Windows7下测试(实际上是vista,但它在Windows 7中做同样的事情)。

我很惊讶,我遇到的唯一问题实际上是以下几点:

复杂的无模型对话框中的任何滚动条都无法正常运行。主要问题是滚动拇指没有响应 - 如果您尝试移动它只是保持锁定位置。没有问题一直回到win98,win2000和winxp。仅限Windows 7 / Vista中的

但是在此对话框中的滚动条中没有通用性来解释它:一个是通过资源文件创建的普通richtext控件。另一个是通过CreateWindow创建的richtext。然而第三个滚动条位于自定义窗口类中。它们都没有正常工作(虽然您可以通过右键单击并选择“滚动到此处”来滚动它们。)

所以我假设也许是几年前第一次移植到Window7 / Vista时遇到的最多,但我现在没有在google中找到任何东西。

1 个答案:

答案 0 :(得分:1)

对于无模式对话框,您必须在主应用程序GetMessage循环中运行IsDialogMessage,因此无模式对话框的消息不受TranslateMessage和DispatchMessage的约束。所以我之前就这样做了。但是,Vista / Win7不喜欢WM_MOUSEMOVE,并且WM_LBUTTONDOWN和WM_LBUTTONUP被旁路,就像对话框那样(即它们需要保留在主App消息循环中)。至少这是我的问题。我现在在主消息循环中检查那些消息类型,这解决了我的问题。无法解释它。也无法解释为什么以前没有人遇到这个(可能是我设置的一些特殊性我猜)。对那些研究过这个问题的人说谢谢。