如何实现对Frame中HTML源码的直接读写

FBStudio 2000-10-07 11:26:00
CMyView(派生于CHtmlView)的成员函数SetHtml的作用是在框架lpszTargetFrameName中显示lpszHtml所代表的Web内容(lpszHtml就是HTML源码),当lpszTargetFrameName为空时则直接显示在CMyView所在的页面中。程序运行时对非Frame可以正常工作,可对Frame却检取不到文档对象的IPersistStreamInit接口.
要求:
实现对Frame中HTML源码的直接读写(不能借助于临时文件);
给出例程
对最早给出可行方案的至少给予200分,其他人酌情给分。
如分数不够可以再加。

下面是SetHtml程序的实现
BOOL CMyView::SetHtml(LPCTSTR lpszHtml, LPCTSTR lpszTargetFrameName)
{
LPSTREAM pStream=NULL;
HGLOBAL hHTMLText=NULL;
IPersistStreamInit *psi=NULL;
LPDISPATCH pDisp=GetHtmlDocument( );
if (pDisp==NULL) return FALSE;
IHTMLDocument2 *pDoc=NULL;
HRESULT hr=pDisp->QueryInterface(IID_IHTMLDocument2,(void**)&pDoc);
pDisp->Release();
if (hr!=S_OK) return FALSE;
if (lpszTargetFrameName&&_tcslen(lpszTargetFrameName)>0)
{
IHTMLFramesCollection2 *pFrames=NULL;
hr=pDoc->get_frames(&pFrames);
pDoc->Release();
pDoc=NULL;
if (hr==S_OK)
{
COleVariant varIndex(lpszTargetFrameName),varResult;
hr=pFrames->item(&varIndex, &varResult);
pFrames->Release();
pDisp=varResult.pdispVal;
if (hr==S_OK&&pDisp!=NULL)
{
IHTMLWindow2 *pWin = NULL;
hr=pDisp->QueryInterface(IID_IHTMLWindow2,(void**)&pWin);
pDisp->Release();
if (hr==S_OK)
{
hr=pWin->get_document(&pDoc);
pWin->Release();
if (hr!=S_OK) return FALSE;
}
}
}
}
try
{
//一面这行对于Frame总是查询不到IPersistStreamInit接口
if (pDoc->QueryInterface(IID_IPersistStreamInit, (void**)&psi)!=S_OK) throw 1;
if (psi->InitNew()!=S_OK) throw 2;
int len=_tcslen(lpszHtml)+1;
hHTMLText=GlobalAlloc(GPTR,len*sizeof(TCHAR));
if (hHTMLText==NULL) throw 3;
_tcscpy((LPTSTR)hHTMLText,lpszHtml);
if (CreateStreamOnHGlobal(hHTMLText, true, &pStream)!=S_OK) throw 4;
if (psi->Load(pStream)!=S_OK) throw 5;
return TRUE;
}
catch(int e)
{
switch(e)
{
case 5:
pStream->Release();
case 4:
GlobalFree(hHTMLText);
case 3:
case 2:
psi->Release();
case 1:
pDoc->Release();
break;
}
return FALSE;
}
}
...全文
496 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxbyl 2001-04-12
  • 打赏
  • 举报
回复
你先别急着给分,我去试试先
fb2000 2001-04-12
  • 打赏
  • 举报
回复
在有Frame的情况下是行不通的。
FBStudio 2001-04-12
  • 打赏
  • 举报
回复
给分了
FBStudio 2001-03-11
  • 打赏
  • 举报
回复
怎么给不了分?
FBStudio 2001-03-11
  • 打赏
  • 举报
回复
送分
FBStudio 2000-12-28
  • 打赏
  • 举报
回复
来取分啊!
FBStudio 2000-12-06
  • 打赏
  • 举报
回复
又来了
FBStudio 2000-11-11
  • 打赏
  • 举报
回复
不达送分之目的,誓不罢休!
FBStudio 2000-10-24
  • 打赏
  • 举报
回复
不回答没关系,可以把分领走
mywater 2000-10-16
  • 打赏
  • 举报
回复
使用脚本不行吗??IWebBrowser2装入网页,在网页中使用脚本,把目标设置为目标框架就行吧???

FBStudio 2000-10-16
  • 打赏
  • 举报
回复
我的问题实现是: 如何用VC在Frame中直接显示内存中的HTML页面而不借助于任何临时文件
oldworm 2000-10-13
  • 打赏
  • 举报
回复
我分析Html代码从来都不使用ms现成的东西,直接将Html文件作为文本文件进行词法分析,当然这需要很强的缓冲分析功底,不是任何人都可以作的。
zhq2000 2000-10-13
  • 打赏
  • 举报
回复
这个问题我也遇到过,当我用javascript访问时,IE告诉我 权限不足 或 禁止访问!
yandw 2000-10-12
  • 打赏
  • 举报
回复
其实我也很想帮你,我也对VC边望上程序感兴趣,可我 是出学者,没办法,我将关注
这各问题。
FBStudio 2000-10-12
  • 打赏
  • 举报
回复
将送分进行到底!
FBStudio 2000-10-09
  • 打赏
  • 举报
回复
还差13人啊
xwind 2000-10-09
  • 打赏
  • 举报
回复
不是不看,是不懂啊:(
FBStudio 2000-10-08
  • 打赏
  • 举报
回复
这是本人加入CSDN后提出的第一个问题,谁知没人响应。看来我也应该离开CSDN了。
前15名跟贴者无论菜鸟还是老鸟每人均可获20分
FBStudio 2000-10-08
  • 打赏
  • 举报
回复
to edyang
目前我就是用的临时文件,我希望有更好的方法。我觉得MS不会这么蠢的。
Edward 2000-10-08
  • 打赏
  • 举报
回复
俺试过了,确实如你所说,行不通。
最好的办法实用临时文件,调用 CHtmlView::Navigate2,有个参数可以指定 Target Frame。
加载更多回复(2)
内容概要:本文围绕“基于超局部模型与自抗扰ESO观测器的无模型预测电流控制改进策略”展开研究,提出一种结合超局部模型(ULM)与扩张状态观测器(ESO)的无模型预测电流控制(MFPCC)改进方法,旨在提升永磁同步电机(PMSM)电流环的动态响应性能与抗干扰能力。该策略利用超局部模型对系统行为进行局部逼近,避免依赖精确数学模型,同时引入自抗扰控制的ESO实时观测并补偿系统内外部扰动,有效抑制参数摄动、负载变化及模型不确定性带来的影响。研究通过Simulink搭建完整的控制系统仿真模型,对传统MFPCC与所提改进策略进行对比分析,验证了新方法在电流跟踪精度、响应速度和鲁棒性方面的优越性。; 适合人群:具备电机控制、现代控制理论及Simulink仿真基础的电气工程、自动化及相关专业的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于高性能电机驱动系统电流环控制器的设计与优化;②为无模型控制与自抗扰控制的融合应用提供技术参考;③支撑相关课题的仿真验证、论文复现与创新方法研究。; 阅读建议:建议读者结合Simulink仿真模型深入理解控制结构与参数整定过程,重点关注ESO的观测性能与扰动补偿机制,并可通过改变负载条件、参数偏差等工况进行鲁棒性测试,进一步掌握该改进策略的核心优势与适用边界。
内容概要:本文围绕Scratch图形化编程平台,详细阐述了《人体感应灯光系统》这一贴近生活的AI科创作品的设计与教学应用。通过模拟真实智能家居人体感应灯的工作原理,利用Scratch的侦测、逻辑判断、亮度特效调节等功能,实现了人物靠近自动亮灯、延时熄灭及环境亮度自适应等仿真功能。文章系统拆解了从场景搭建、核心逻辑设计、分层编程实现到调试优化的完整开发流程,并提供了基础版与进阶版可直接导入的源码,支持零基础快速上手与高阶创新拓展。同时构建了“基础—进阶—高阶”三层阶梯式教学体系,适配常规课堂、创客社团与赛事培优等多元教学场景,推动小学AI教育的生活化、实践化与创新化发展。 适合人群:小学高年级至初阶段学生,信息技术教师,创客教育从业者,以及参与青少年科创赛事的师生。 使用场景及目标:①作为小学人工智能通识课程的教学案例,帮助学生理解智能感应与控制逻辑;②用于校内创客社团开展项目式学习;③支撑学生参加AI科创类赛事,完成高质量作品创作与答辩准备;④布置为课后综合实践作业,提升动手能力与科技素养。 阅读建议:建议结合提供的Scratch源码进行实践操作,在复现基础上尝试参数调优与功能扩展,如增加音效提示、多区域感应等,深化对编程逻辑与智能系统设计的理解。

3,056

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧