如何在CDHtmlDialog中引用html资源的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在CDHtmlDialog中引用html资源的方法相关的知识,希望对你有一定的参考价值。

1。使用绝对路径在资源里引入html网页和图片资源:
使用RES://应用程序名称/资源类型/#资源号,
例如:如果你的应用程序名为c.exe,html网页或资源保存在HTML类型下。并且查看资源标示号为133,便可以这样引用:res://c.exe/html/#133。或这样引用:res
://c:/c.exe/html/#133
2。使用相对路径引用:
如果使用方法1,总得去寻找应用程序名称,如果引入的是html中的图片,有诸多不便,譬如:应用程序如果改变了名称,那调用便会无效。为了防止这些纠葛,有一个非常好的办法就是:把所有使用的资源(图片,CSS,JS等),统统放到HTML资源类型下,引用的时候写成 res://#资源号就可以了。譬如上例便可以这样引用:res:/#133。当然好像res:/ 和res:// 是通用的。

3。FLASH控件的支持:
我没有在资源里引用flash成功,看了看flash的官方文档,好像必须为绝对路径才可以。例如movie=“d://flash//test.swf”是可以成功的。

4。不在资源里引用HTML,直接在本地文件里使用。可以在CDHtmlDialog的继承类里添加一个函数来处理。
Code highlighting produced by Actipro CodeHighlighter (freeware)

CodeHighlighter.com/

void CDHtmlViewSpec::GotoUrl(LPCTSTR pszUrl)



CString strPath,str;

DWORD dwSize=MAX_PATH;

::GetModuleFileName(NULL,strPath.GetBuffer(MAX_PATH),dwSize); //AfxGetResourceHandle()

strPath.ReleaseBuffer(dwSize);

str=strPath.Left(strPath.ReverseFind('//') 1);

ASSERT(pszUrl!=NULL);

if(pszUrl!=NULL)



CString strUrl;

strUrl=str pszUrl;

Navigate(_T("file:///") strUrl);



参考技术A 可以利用javascript脚本语言实现,示例如下:
1、打开文本编辑器或记事本程序,输入<html><body>以及<head>标签:
<html>
<head></head>
<body></body>
</html>
2、在<head>头标签后输入<script>标签:
<script type="text/javascript">
</script>
3、在<script>标签中定义一个函数duihua()来使网页弹出对话框:
function duihua()

alert("这个窗口是对话框!")

4、然后,再定义一个函数命名为queren(),用来弹出确认框:
function queren()

var se=confirm("请选择点击一个按钮!");
if (se==true)

alert("你按下的是【确认】");

else

alert("你按下的是【取消】");


5、继续定义另一个函数tishi(),用来在网页中弹出提示框。
function tishi()

var t=prompt("请输入您的名字","KING视界")
if (t!=null && t!="")

document.write("精彩MV就在," + t + "!属于你的世界")


6、函数定义好以后,在<body>标签后,建立3个按钮分别用来调用这3个函数执行。
<input type="button" onclick="duihua()" value="点击显示对话框" />
<input type="button" onclick="queren()" value="点击显示确认框" />
<input type="button" onclick="tishi()" value="点击显示提示框" />
7、保存该文件,用ie浏览器打开的,点击对应按钮,即可弹出相应对话框。
参考技术B 如果span内容不一样,那么就获取所有的span,然后对比当前获得的,从而知道顺序

MFC FormView+ CDHtmlDialog

在mfc中创建一个SDI,让View类从FormView继承,可以往视图窗口拖拽控件,也就是说FormView内置了一个对话框,我想使用CDHtmlDialog来替换这个普通的对话框,这样便于使用html来控制界面,不知道可不可以做到?
如果可以做到的话,该如何做呢?
如果不可以做到的话,应该用什么方法实现这样的效果呢:可以往View内拖控件,可以自定义所拖控件的样式
F

直接用替换恐怕不行,因为CDHtmlDialog不是从视图派生的,如果要用html来控制可以直接从CHtlmView来替代FormView,或者在FormView中放一个Html的控件。

注意:如果只是替换可编辑的那块FRAME,则用对话框是可以替换的,但是此种替换实际上和没有替换是一样的,你无法用来处理CDHtmlDialog特有的功能。

如果你想既有CFORM可以编辑,又有HTML视图可以控制,那就用多视图吧,左边是FORM,右边是HTML。
替换:先把对话框的ID换成原先FORMVIEW的ID,然后在其属性中设置为CHILD,样式设置为NONE。就可以替换原来那一块东西。
参考技术A 就如同你说的,替换为CDHtmlDialog就可以了。ForView和DIalog一样。

以上是关于如何在CDHtmlDialog中引用html资源的方法的主要内容,如果未能解决你的问题,请参考以下文章

MFC FormView+ CDHtmlDialog

为啥在 CDHtmlDialog 中禁用视觉样式

试问 MFC中 CDHtmlDialog的 IHTMLElement用法

如何在页面加载之前隐藏 CDHTMLDialog?

CDHtmlDialog加壳HTML5页面跳转错误解决(原)

为啥我在尝试调用 CDHtmlDialog::OnInitDialog() 时看到崩溃