gpt4 book ai didi

c++ - IE9 Web 控件不会在 CHtmlView 中重绘自身

转载 作者:太空宇宙 更新时间:2023-11-04 12:16:49 24 4
gpt4 key购买 nike

这是一个旧的 MFC 应用程序,它实现了一些选项卡式框架窗口。 frame中任何时候都只显示一个CView,切换tab时使用以下代码隐藏旧tab内容显示新内容:

oldview->EnableWindow(FALSE);
oldview->ShowWindow(SW_HIDE);
newview->EnableWindow(TRUE);
newview->ShowWindow(SW_SHOW);
newview->SetFocus();

现在这一切都适用于任何类型的 CView-s,包括 CHtmlView 派生的,但在计算机上安装 IE9 时停止工作(IE8 工作正常)。在 CHtmlView 之间切换选项卡时,Web 浏览器控件不会重绘自身,并且之前的选项卡内容仍然可见。拖动时,例如该区域上方的计算器窗口,内容以参差不齐的方式重新出现,表明控件只是不理解窗口内容已失效,需要重新绘制。添加 newview->Invalidate() 调用没有帮助,也许我应该深入挖掘 CHtmlView 并直接向 Web 浏览器控件发送一些消息?

TIA,帕沃

最佳答案

OK,谜底揭晓。看起来点击选项卡也激活了代码中其他地方的拖动循环,并且在开始拖动之前执行了以下代码以重绘刚刚激活的选项卡:

MSG msg;  
while (::PeekMessage(&msg, NULL, WM_PAINT, WM_PAINT, PM_NOREMOVE))
{
if (!::GetMessage(&msg, NULL, WM_PAINT, WM_PAINT))
return;
DispatchMessage(&msg);
}

然而,这段代码似乎完全混淆了 IE9 网络浏览器控件。删除此代码后,重绘效果很好(我必须以其他方式解决拖动行为)。

关于c++ - IE9 Web 控件不会在 CHtmlView 中重绘自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7344413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com