如何在 64 位窗口上调整大小时更新表单?

发布于 2024-12-11 14:11:24 字数 317 浏览 0 评论 0原文

我遇到一个问题,在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

流年里的时光 2024-12-18 14:11:24

这是由于有许多嵌套控件/窗口造成的。 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. The WM_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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文