Navigate()函数的URL参数可以设置为相对路径吗?

举报
allin_allin 发表于 2021/05/29 11:59:16 2021/05/29
【摘要】 问题描述: 最近在编写MFC程序,用到了浏览器控件【Microsoft Web Browser】,通过浏览器对象的Navigate()函数设置显示html页面,将写好的文件放在程序目录下之后,想用相对路径来调用自己写的一个“geodemo.htm”文件,失败。 原因: 首先你要搞懂什么是相对路径。相对路径就是相对本进程的当前活动目录,一般是在本进程的可...

问题描述:


最近在编写MFC程序,用到了浏览器控件【Microsoft Web Browser】,通过浏览器对象的Navigate()函数设置显示html页面,将写好的文件放在程序目录下之后,想用相对路径来调用自己写的一个“geodemo.htm”文件,失败。


原因:


首先你要搞懂什么是相对路径。相对路径就是相对本进程的当前活动目录,一般是在本进程的可执行文件的所在目录,程序安装在其他电脑之后,进程运行期间可以随意修改,所认不到路径。


解决方案:


方案一:

通过计算先获取进程路径后,后面添加相对路径的地址。

即通过GetModuleFileName()函数获取当前进程完整路径的函数:

DWORD WINAPI GetModuleFileName( _In_opt_  HMODULE hModule,  _Out_     LPTSTR lpFilename,    _In_      DWORD nSize);
HMODULE hModule 装载一个程序实例的句柄。如果该参数为NULL,该函数返回该当前应用程序全路径;
LPTSTR lpFileName 是你存放返回的名字的内存块的指针,是一个输出参数;
DWORD nSize,装载到缓冲区lpFileName的最大值。

使用实例:
 char wszPathName[256] = { 0 };
 GetModuleFileName( 0, wszPathName, 256);
注意:此方法只能获取当前进程,如需要获取另外的进程路径,可以使用GetModuleFileNameEx函数。



方案二:

用IIS给个端口访问。

我们在做CDHTMLDialog相关的时候,网页部分的内容,建议像网站一样,用IIS给个端口,绑定个目录,然后使用http协议去访问,这样就可以写相对路径了;通过IIS发布网站,给个端口,就可以用IP:端口/相对路径





文章来源: blog.csdn.net,作者:allinallinallin,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/to_Baidu/article/details/53575393

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。