我已经注意到,使用嵌入式IE控件(CHtmlView),通过拖动父窗口的边框来调整大小的任何尝试都不会调整IE控件的内部工作。我启动了Spy ++,并比较了嵌入式控件和IE浏览器,而且我很确定这是“ Shell Embedding”窗口,可防止任何大小调整事件传播到Internet Explorer_Server控件。
我可以看到WM_SIZE,WM_WINDOWPOSCHANGED等命中了Shell嵌入控件,但是Shell DocObject View没有任何结果。但是,它将通过“最大化/还原”来接收这些消息,并适当调整内部IE_Server的大小。
查看IE本身:
我确实看到大小,位置更改等事件击中了壳DocObject视图,显然IE在拖动边框时调整了页面的大小。唯一有意义的是“外壳嵌入”窗口不允许通过拖动来调整大小来调整大小。
这是否准确,如果可以,是否有解决方法,除了可以通过手动将WM_SIZE事件手动发送给Shell Embedding子项以强制其调整大小的方法之外,还可以使它调整大小。
当子MFC窗口的数量超过最大堆栈大小,并且消息不再完全发送时,我们最终成为Windows堆栈大小限制的受害者。
发送PostMessage来将大小调整到几级以返回到消息泵中的方法可以解决此问题。