这是一个旧的MFC应用程序,它实现了一些标签框架窗口。在框架中随时只显示一个CView,切换选项卡时,以下代码用于隐藏旧选项卡内容并显示新选项卡:
oldview->EnableWindow(FALSE);
oldview->ShowWindow(SW_HIDE);
newview->EnableWindow(TRUE);
newview->ShowWindow(SW_SHOW);
newview->SetFocus();
现在这一切都适用于任何类型的CView,包括CHtmlView派生的,但在计算机上安装IE9时停止工作(IE8工作正常)。从CHtmlView切换标签和返回标签时,Web浏览器控件不会重绘自身,之前的标签内容仍然可见。拖动时,例如在该区域上的计算器窗口,内容以不规则的方式重新出现,表明控件只是不理解窗口内容无效并需要重新绘制。添加newview-> Invalidate()调用没有帮助,可能我应该深入挖掘CHtmlView并直接向Web浏览器控件发送一些消息?
TIA, 帕沃
答案 0 :(得分:1)
MSG msg;
while (::PeekMessage(&msg, NULL, WM_PAINT, WM_PAINT, PM_NOREMOVE))
{
if (!::GetMessage(&msg, NULL, WM_PAINT, WM_PAINT))
return;
DispatchMessage(&msg);
}
然而,似乎这段代码完全混淆了IE9网页浏览器控件。删除此代码后,重绘效果很好(我必须以其他方式解决拖动行为)。