XP滚动条在Windows7/Vista中失控

XP scrollbars going haywire in Windows7/Vista

本文关键字:Vista 失控 Windows7 滚动条 XP      更新时间:2023-10-16

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

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

一个复杂的无模型对话框中的滚动条都不能正常工作。主要的问题是滚动拇指没有响应——如果你试图移动它,它只是锁定在位置上。一直到win98、win2000和winxp都没有问题。现在只支持windows 7/Vista

但是在这个对话框中的滚动条中没有通用性来解释它:一个是在通过资源文件创建的纯文本控件中。另一个是通过CreateWindow创建的richtext。第三个滚动条在自定义窗口类中。它们都不能正常工作(尽管你可以通过右键单击并选择"滚动到这里"来使它们滚动)

所以我猜想也许大多数人在几年前第一次移植到Window7/Vista时遇到了这个问题,但我现在在谷歌上找不到任何东西

对于非模态对话框,您必须在主应用程序GetMessage Loop中运行IsDialogMessage,因此非模态对话框的消息不受TranslateMessage和DispatchMessage的约束。我之前就是这么做的。然而,Vista/Win7不喜欢WM_MOUSEMOVE, WM_LBUTTONDOWN和WM_LBUTTONUP被绕过,就像对话框(即他们需要留在主应用程序消息循环)。至少这是我的问题所在。我现在在主消息循环中检查这些消息类型,这解决了我的问题。也无法解释。也无法解释为什么以前没有人遇到过这种情况(我猜可能是我的设置的一些特质)。感谢那些调查此事的人。