使用Visual Studio C ++ 2008 Windows窗体应用程序中的webBrowser组件修复浏览器依赖性?

时间:2012-01-06 07:38:04

标签: c++ visual-studio browser

我正在研究一个基本程序,我尝试添加一个有效的webBrowser组件,以便为用户提供更大的灵活性,并能够从程序中浏览某些网站,但是我已经运行了我无法提前解决问题。

大多数现代网站都对新浏览器有一些依赖关系,例如,如果您从webBrowser组件中访问youtube,它会告诉您升级到更现代的浏览器。还有其他网站问题,如透明度问题,位图问题,缺少或错过布局,以及诸如此类的东西。例如,使用webBrowser组件访问StackOverflow会使网站看起来很奇怪,并且徽标不是tansparent。

我使用此代码在窗口中显示Web浏览器:

                    this->webBrowser1->Dock = System::Windows::Forms::DockStyle::Fill;
            this->webBrowser1->Location = System::Drawing::Point(0, 0);
            this->webBrowser1->MinimumSize = System::Drawing::Size(20, 20);
            this->webBrowser1->Name = L"webBrowser1";
            this->webBrowser1->Size = System::Drawing::Size(823, 587);
            this->webBrowser1->TabIndex = 0;
            this->webBrowser1->Url = (gcnew System::Uri(L"http://www.google.com", System::UriKind::Absolute));

此代码在文本字段中输入网站后点击按钮导航到某个网站:

private: System::Void toolStripButton1_Click(System::Object^  sender, System::EventArgs^  e) {
                 webBrowser1->Navigate(toolStripTextBox1->Text);
             }

我的问题是,你如何解决这些依赖关系? Visual Studio本身有问题吗? (因为我使用的是2008版本)或默认使用IE7选项?如果是这样,你如何解决它,以便网站正确加载并按预期工作?

1 个答案:

答案 0 :(得分:1)

据我所知,WebBrowser控件在默认模式下渲染页面,通常是IE7,但是,根据您的描述,听起来您的控件实际上是在IE6模式下渲染。这表明你只在开发机器上安装了IE6。

似乎解决此问题的唯一方法是向网页添加元标记或更改注册表中的默认模式。有关详细信息,请查看this post。这可能有所帮助。

就个人而言,我建议使用不同的浏览器控件,因为您可能永远无法控制您的工具用户将在IE中看到的内容。 如果您可以使用其他依赖项,Webkit和Gecko都是免费且易于使用的,并且提供了更多功能。