質問: 以下のサイトを参考に、VisualStudio2019でCHtmlViewを用いたアプリケーションを作成しました。 ウィザードで作成したアプリのOnInitialUpdateを以下のように修正して実行すると、 ``` // 修正前 void CMFCApplication2View::OnInitialUpdate() { CHtmlView::OnInitialUpdate(); Navigate2(_T("http://msdn.microsoft.com/ja-jp/visualc/default.aspx"),nullptr, nullptr); } // 修正後 void CMFCApplication2View::OnInitialUpdate() { CHtmlView::OnInitialUpdate(); // 引数が3つだとビルドエラーになるので、1つに変更 Navigate2(_T("https://maps.google.co.jp/")); } ``` キャプチャのように、互換表示の警告が出ます。 ![画像の説明をここに入力](https://i.stack.imgur.com/BX4Pq.png) IEの互換表示は無効にしており、WindowsUpdateも実施済みです。 尚、PCにはChromeもインストールしており、こちらが規定ブラウザという設定です。 この警告が出た後、スクリプトエラーが何度も出ますが、一応地図の閲覧はできます。 警告やスクリプトエラーが出ないようにしたいのですが、何をすればよいでしょうか? よろしくお願いします。 --- 追記です。 以下のように、ユーザエージェントを偽装しても同じ警告が出ます。 ``` void CMFCApplication2View::OnInitialUpdate() { CHtmlView::OnInitialUpdate(); Navigate2(_T("https://maps.google.co.jp/"), NULL, NULL, _T("User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko ")); } ``` ※上記ユーザエージェントは、実際にIE11でユーザエージェント確認サイトにて確認した内容です。
回答: CHtmlViewが使用しているWebBrowserコントロールは互換性のため既定でIE7モードで動作します。IE11モードで動作させたい場合はBrowser Emulation#browser-emulation)の説明に従いレジストリを設定する必要があります。 `HKEY_LOCAL_MACHINE` への書き込みは管理者で行う必要があります。`HKEY_CURRENT_USER` であれば通常の権限で書き込み可能です。加えて、`HKEY_CURRENT_USER` は32bit / 64bit共通です。また`CHtmlView`作成前にレジストリ値が書き込まれていれば良いため、プログラム開始時に書き込めば十分です。