0

我注意到使用嵌入式 IE 控件 (CHtmlView),任何通过拖动父窗口的边框来调整大小的尝试都不会调整 IE 控件的内部工作。我启动了 Spy++ 并将嵌入式控件与 IE 浏览器进行了比较,我很确定这是“Shell Embedding”窗口,它阻止了任何大小调整事件传播到 Internet Explorer_Server 控件。

在此处输入图像描述

我可以看到 WM_SIZE、WM_WINDOWPOSCHANGED 等点击了 Shell Embedding 控件,但 Shell DocObject View 什么也得不到。但是,它会通过最大化/恢复向下接收这些消息并适当地调整内部 IE_Server 的大小。

查看 IE 本身:

在此处输入图像描述

我确实看到了大小调整、位置更改等事件击中了 Shell DocObject 视图,并且显然 IE 在拖动边框时调整了页面大小。唯一有意义的是,Shell Embedding 窗口不会通过拖动来调整大小。

这是否准确,如果是这样,除了手动将 WM_SIZE 事件发送到 Shell Embedding 子项以强制它调整大小的一些技巧之外,是否有一种解决方法来调整它的大小?

4

1 回答 1

0

当子 MFC 窗口的数量超过最大堆栈大小时,我们最终成为 Windows 堆栈大小限制的受害者,并且消息不再一路向下发送。

发送 PostMessage 以将几个级别的大小重新调整回消息泵可以解决此问题。

于 2019-11-18T19:26:44.647 回答