拖动时嵌入式 IE 控件 (CHtmlView) 未向下传递 WM_SIZE
Embedded IE control (CHtmlView) not passing down WM_SIZE while dragging
我注意到,对于嵌入式 IE 控件 (CHtmlView),任何通过拖动父 window 的边框来调整大小的尝试都不会调整 IE 控件的内部工作方式。我启动了 Spy++ 并将嵌入式控件与 IE 浏览器进行了比较,我很确定它是 "Shell Embedding" window 阻止任何大小调整事件向下传播到 Internet Explorer_Server 控件。
我可以看到 WM_SIZE、WM_WINDOWPOSCHANGED 等点击 Shell 嵌入控件,但 Shell DocObject 视图什么也得不到。但是,它将通过最大化/向下还原接收这些消息并适当地调整内部 IE_Server 的大小。
查看 IE 本身:
我确实看到 Shell DocObject 视图发生了大小调整、位置更改等事件,显然 IE 在拖动边框时调整了页面大小。唯一有意义的是 Shell 嵌入 window 不会通过拖动来调整大小。
这是准确的吗?如果是这样,是否有解决方法来调整大小,除了手动发送 WM_SIZE 事件到 Shell 嵌入子项以强制其调整大小?
当子 MFC windows 的数量超过最大堆栈大小时,我们最终成为 Windows 堆栈大小限制的受害者,消息不再一直向下发送。
发送 PostMessage 以将大小调整回消息泵的几个级别的 hack 解决了这个问题。
我注意到,对于嵌入式 IE 控件 (CHtmlView),任何通过拖动父 window 的边框来调整大小的尝试都不会调整 IE 控件的内部工作方式。我启动了 Spy++ 并将嵌入式控件与 IE 浏览器进行了比较,我很确定它是 "Shell Embedding" window 阻止任何大小调整事件向下传播到 Internet Explorer_Server 控件。
我可以看到 WM_SIZE、WM_WINDOWPOSCHANGED 等点击 Shell 嵌入控件,但 Shell DocObject 视图什么也得不到。但是,它将通过最大化/向下还原接收这些消息并适当地调整内部 IE_Server 的大小。
查看 IE 本身:
我确实看到 Shell DocObject 视图发生了大小调整、位置更改等事件,显然 IE 在拖动边框时调整了页面大小。唯一有意义的是 Shell 嵌入 window 不会通过拖动来调整大小。
这是准确的吗?如果是这样,是否有解决方法来调整大小,除了手动发送 WM_SIZE 事件到 Shell 嵌入子项以强制其调整大小?
当子 MFC windows 的数量超过最大堆栈大小时,我们最终成为 Windows 堆栈大小限制的受害者,消息不再一直向下发送。
发送 PostMessage 以将大小调整回消息泵的几个级别的 hack 解决了这个问题。