多文档htmlview的问题

xiaoyao888 2006-04-15 07:55:04
如何在打开html文件时如果当前页是非空白页或非主页时从新窗口打开?
...全文
270 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyao888 2006-04-27
  • 打赏
  • 举报
回复
成了,我把
CFrameWnd* pFrame = pDocTemplate->CreateNewFrame(
GetDocument(),
(CFrameWnd*)AfxGetMainWnd() );
改成
CFrameWnd* pFrame = pDocTemplate->CreateNewFrame(
pDocTemplate->CreateNewDocument(),
(CFrameWnd*)AfxGetMainWnd() );
看来用GetDocument()的话他把所有打开的窗口都当成一个文档了,用SetWindowText虽然可以改名但是要想不关联必须重建新文档才行。


获得框架网页的源代码能否给个例子,我还是搞不定。
xiaoyao888 2006-04-26
  • 打赏
  • 举报
回复
1 我总觉的是OnNewWindow2的问题

CWinApp* pApp = AfxGetApp();
POSITION pos = pApp->GetFirstDocTemplatePosition();
CDocTemplate* pDocTemplate = pApp->GetNextDocTemplate( pos );
CFrameWnd* pFrame = pDocTemplate->CreateNewFrame(
GetDocument(),
(CFrameWnd*)AfxGetMainWnd() );
pDocTemplate->InitialUpdateFrame( pFrame, NULL );
CHtmlDumpView* pView = (CHtmlDumpView*)pFrame->GetActiveView();
pView->SetRegisterAsBrowser( TRUE );
*ppDisp = pView->GetApplication();
是不是里面少了什么才导致打开的新窗口都成一组了?

2 能不能具体一点,找不到

3 好像也不行,我就是想网页打开后自动保存并关闭,但是在DocumentComplete里不能执行关闭命令,一运行就死

蒋晟 2006-04-26
  • 打赏
  • 举报
回复
1 override onclosedocument, and debug step by step
2 execute DHTML command IDM_SAVEAS
3 DocumentComplete
蒋晟 2006-04-25
  • 打赏
  • 举报
回复
call SetWindowText inside CFrameWnd::OnUpdateFrameTitle
xiaoyao888 2006-04-25
  • 打赏
  • 举报
回复
光改标题好像达不到我的目的,我从文件菜单选关闭的话,所有的窗口都关闭了,而不是只关闭激活的窗口,好像是这些打开的窗口是一组相关联的,如何让它们各自独立呢,就像从文件新建一样,我想这样标题自然就不会乱改变了。
希望能给出具体的代码。

另外保存网页源码的时候如何保存有框架的网页中子页的源码?

如何判断网页已经下载完毕了?
我在OnDownloadComplete()的最后发送自定消息,不过好像不行,这样程序就和死了一样。
xiaoyao888 2006-04-24
  • 打赏
  • 举报
回复
地址栏的问题终于解决了,我把accelerator keys里所有和EDIT有关的全删了就行了

但是标题改变还没解决
我是重写了OnTitleChange(LPCTSTR lpszText)

if (m_pDocument != NULL)
m_pDocument->SetTitle(lpszText);

但是还是不行,只要从同一个窗口打开的新窗口不论有多少都和最后打开的那个同名,也就是说前面所有的窗口的标题都同时改成最后打开的那个窗口的标题了。
不过从文件新建处打开的就不会改变。
IEAutomation也是这样的。

重写CFrameWnd::OnUpdateFrameTitle应该怎么写呢。
蒋晟 2006-04-23
  • 打赏
  • 举报
回复
1 check your accelerator keys
2 Override CFrameWnd::OnUpdateFrameTitle, or call CDocument::SetTitle
xiaoyao888 2006-04-23
  • 打赏
  • 举报
回复
怎么没人理了?是闲分少吗,这里还有20分,不够还可以加
http://community.csdn.net/Expert/TopicView.asp?id=4693785

另外我照IEAutomation重写了NewWindow2,但是打开新窗口时原窗口的标题却和新窗口变成一样的了,比如[新闻:1],[新闻:2]等,这个是哪里设置的有问题呢?
xiaoyao888 2006-04-21
  • 打赏
  • 举报
回复
还有个问题
为什么我参考IEAutomation做的程序地址栏不能响应复制粘贴的热键,我想这个应该不用自己编写响应函数吧,因为我在MFCIE和IEAutomation都没有找到这样的函数,但是这两个都可以响应热键啊,为什么我的就不行呢?
蒋晟 2006-04-18
  • 打赏
  • 举报
回复
1 override CWinApp::OpenDocumentFile and CWinApp::DoPromptFileName, see http://www.codeproject.com/docview/DocViewEnhancements.asp
2 handle NewWindow2. Demostrated in the sample and the reply above.
xiaoyao888 2006-04-17
  • 打赏
  • 举报
回复
老大的例子我看了,不过好像不符合我的要求,我说的打开HTML文档不是指输入地址打开,而是从菜单,文件,打开处打开,我试了一下这个例子不能实现我的要求,而且在没有文档的时候不能直接打开HTML文档,必须先新建,我试了一下在读取路径时加 _blank 参数可以新建文档,但不知道怎么判断当前文档是不是空白页或主页,难道就是和文档的title比较吗,没有这么简单吧,还有没有文档打开的时候该怎么办呢,我在APP里添加OnFileOpen函数但是却无法实现,不知道该怎么做?

另外如何在打开新窗口时也像ie一样有不带地址栏、工具栏的小窗口,就是用javascript脚本打开的那些弹出窗口。是不是还要处理javascript脚本?该怎么做呢?
贵子潘 2006-04-16
  • 打赏
  • 举报
回复
可以在OnNewWindow2中实现,比如:
void CIEView::OnNewWindow2(LPDISPATCH* ppDisp, BOOL* Cancel)
{
// TODO: Add your specialized code here and/or call the base class
Cancel=FALSE;
LRESULT pResult=AfxGetMainWnd()->SendMessage(WM_NEW_IEVIEW);
CWnd* pWnd=(CWnd*)pResult;
ASSERT(pWnd->IsKindOf(RUNTIME_CLASS(CIEView)));
*ppDisp = ((CIEView*)pWnd)->GetApplication();
//CHtmlView::OnNewWindow2(ppDisp, Cancel);
}
蒋晟 2006-04-16
  • 打赏
  • 举报
回复
看错
http://blog.csdn.net/jiangsheng/archive/2003/11/09/3795.aspx
蒋晟 2006-04-16
  • 打赏
  • 举报
回复
MDI还是SDI啊

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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