您的位置:首页 > 其它

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

2016-12-14 22:33 302 查看

问题描述:

最近在编写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:端口/相对路径
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息