MFC中WebBrowser.Navigate方法如何调用本地的.htm文件?

Posted allinallinallin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC中WebBrowser.Navigate方法如何调用本地的.htm文件?相关的知识,希望对你有一定的参考价值。

-------------------------------------------------------------------------------------------------------------------------------------------

     最近开发MFC程序,需要使用WebBrowser控件来调用百度地图API,前端代码写在htm文件中,为了方便程序正确移植,WebBrowser.Navigate方法中的URL参数需要设置相对路径,但是WebBrowser控件不好设置相对路径,因此需要曲线救国,自己拼接绝对路径。

-------------------------------------------------------------------------------------------------------------------------------------------


背景

MFC使用WebBrowser控件调用百度地图API案例!

下载地址: http://download.csdn.net/detail/to_baidu/9825890

下载包中的《基于MFC与第三方类CWebPage的百度地图API开发范例.pdf》教程会教你如何在WebBrowser控件中链接页面并进行百度地图的开发。

下载包WebBrowser.Navigate方法使用的是绝对路径:

//设置浏览器控件跳转的地址,显示自己定义的htm文件
m_myweb.Navigate("file:///C:/Users/GO/Documents/Visual Studio 2010/Projects/GeoDemo/GeoDemo/geodemo.htm",NULL,NULL,NULL,NULL);


问题及分析

然而,案例有个小问题:htm文件的URL是通过绝对地址访问的,这种方式在程序移植(譬如拷贝程序到别人的电脑)时就会出现问题:“无法显示此页”,因为Web地址不对,地址是绝对路径,写死了。



在网上百度一通后,想设置相对路径,但是都说MFC的WebBrowser控件不好设置相对路径。因此只有自己通过获取程序所在当前目录,然后拼接成全路径了。


解决方案

step1:用GetCurrentDirectory()函数获取当前目录。

step2:将获取到的当前目录与您要展示的htm文件拼接成全路径。

step3:调用WebBrowser控件的Navigate()函数进行展示。


因此,可将上面的那段代码用下面的的代码进行替换即可。

CString strURL;//htm文件的全路径
char chCurtPath[MAX_PATH];//当前目录

GetCurrentDirectory(MAX_PATH,chCurtPath);//获取当前目录,并存在chCurtPath中
strURL = "file:///"+ (CString)chCurtPath + "/geodemo.htm" ;//将chCurtDrct变量强制转化成CString,并拼接成全路径
m_myweb.Navigate(strURL, NULL, NULL, NULL, NULL);

大功告成,此事程序在不同电脑之间移植时就不会出现Web地址不正确的问题了。












以上是关于MFC中WebBrowser.Navigate方法如何调用本地的.htm文件?的主要内容,如果未能解决你的问题,请参考以下文章

winform显示界面时候使用html模板这个要怎么实现

webBrowser.DocumentText重新赋值无效解决方法

执行几种方法[关闭]

webBrowser执行js的方法,并返回值,c#后台取值

delphi中webbrowser的用法

.NET 的 WebBrowser 类的异步/等待实现