如何在 64 位窗口上调整大小时更新表单?
我遇到一个问题,在 Windows Server 2003 或 2008 等 64 位窗口中运行时,表单上的内容未正确更新。截屏。
当我调整主窗口大小时,内容不会重新绘制。但如果我更换了小分流器,它就会重新喷漆。并且在 32 位 Windows 上一切都运行完美。 我还没有为此创建任何 OnResize 事件。
有什么想法吗?
编辑:是的,可执行文件是 32 位的。只有 Windows 操作系统是 64 位的。
I have a problem with contents on a form is not updated correct when running in 64-bit window like Windows Server 2003 or 2008. There is a short video that illustrate this at screencast.
When I resize the main window the content is not repainted. But if I change the small splitter it is repainted. And everything works perfect on a 32-bit Windows.
I have not made any OnResize events for this.
Any ideas ?
EDIT: Yes, the executable is 32-bit. It is only the Windows OS that is 64-bit.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是由于有许多嵌套控件/窗口造成的。 64 位 Windows 的堆栈大小小于 32 位 Windows 的堆栈大小。如果存在全局
WH_CALLWNDPROC
挂钩,这个值会变得更小。WM_SIZE
消息事件处理导致 Windows 内核吃掉堆栈溢出。请参阅此处并修复此处。另请参阅此处了解相同的问题。PS:WinForms 也遭受 相同 问题。
This is caused by having to many nested controls/windows. The stack size of 64bit Windows is smaller than on 32bit. This gets even smaller if there are global
WH_CALLWNDPROC
hooks. TheWM_SIZE
message event handling gets a stack overflow which the Windows kernel eats. See here and a fix here. Also see here for the same problem.PS: WinForms also suffer from the same problem.