2011-12-31 28 views
1

我有这个XP应用程序(win32 C++),我现在只是在Windows7下测试(实际上,Vista,但它在Windows 7中做同样的事情)。XP的滚动条去在Windows7/Vista的干扰

我很惊讶,几乎我遇到的唯一问题是:在复杂的modelless对话框中的滚动条的

都不是正常。主要问题是滚动拇指没有响应 - 只要您尝试移动它就会保持锁定状态。没有问题一直回到win98,win2000和winxp。只有在Windows 7/Vista中刚才

但是在这个对话框的滚动条中没有共同点来解释它:一个是通过资源文件创建的普通richtext控件。另一个是通过CreateWindow创建的richtext。而第三个滚动条是在自定义窗口类中。没有一个工作正常(虽然你可以通过右击并选择“Scroll Here”来使它们滚动。)

所以我假设也许最经常遇到这个在几年前当第一次移植到Window7/Vista时时间,但我现在在google找不到任何东西。

+1

不,我从来没有见过这个。你正在做任何定制滚动条?你可以在不同的项目中重新制作这个吗? – 2011-12-31 09:53:16

+1

这是另一个人有同样的问题,所以我不是第一个:http://stackoverflow.com/questions/7171412/windows-7-edit-control-vertical-scroll-does-not-work但是,提供的解决方案以确保控件具有父项并不是我的代码的问题,因为我正在指定父项(无论如何,在使用CreateWindow时)。 – Mark 2011-12-31 10:07:42

+0

就自定义而言,我在创建之后调用ShowScrollBar,EnableScrollBar和SetScrollInfo。但正如我所说,这一切都适用于所有以前的Windows版本。只是Vista,Windows 7它做了奇怪的事情。 – Mark 2011-12-31 10:12:09

回答

1

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