昨天,我在一个Windows应用程序中发现了一个错误,该应用程序是在一个高级框架中构建的,该框架最终调用了Windows API(如CreateWindow
和ShowWindow
)以显示其用户界面。
到目前为止,只有一台机器,而恰好是客户机器的只有一台,我观察到以下行为:
ShowWindow(Handle,SW_SHOW )
时,它被SetWindowPos
先前接收的大小覆盖。 在
ShowWindow(Handle,SW_SHOW)
上阅读MSDN Win32 API文档时,我看不到它移动窗口边界的任何引用。我可以通过让我的窗口显示例程在调用Win32 ShowWindow
例程之前获得界限来解决这一令人惊讶的结果。我的问题是,有没有人见过这样的行为?我认为它必须是以下之一:
如果使用过C++,C或Delphi或任何其他语言的任何人都曾经看到过类似的东西,并且可以想到
ShowWindow
会产生这种令人惊讶和意外的副作用的原因,那就是将窗口的边界移回到某个原始位置,在我的情况下,x = 175,y = 175,宽度= 320,高度= 240,这似乎是最初CreateWindow
调用后的窗口边界,我想知道它是什么是。这是一系列事件:
根据MSDN帮助,
SW_SHOW
表示Activates the window and displays it in its current size and position
。实际上,这是我观察到的100多台客户端PC上发生的情况。仅在一台客户拥有的Windows 7 PC上,此行为有所不同。
最佳答案
我不确定FireGL,但对于使用相同芯片系列生产的消费者视频卡,视频驱动程序确实具有附加组件来重新定位窗口,因为他们认为这对运算符(operator)来说更容易。
它称为HydraVision Package
的Catalyst Software Suite