📄 htmleddoc.cpp
字号:
// HTMLEdDoc.cpp : implementation of the CHTMLEdDoc class
//
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.
#include "stdafx.h"
#include "HTMLEdit.h"
#include "HTMLEdDoc.h"
#include "htmledview.h"
#include "geturl.h"
#include "mainfrm.h"
#include "sourceview.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CHTMLEdDoc
IMPLEMENT_DYNCREATE(CHTMLEdDoc, CHtmlEditDoc)
BEGIN_MESSAGE_MAP(CHTMLEdDoc, CHtmlEditDoc)
//{{AFX_MSG_MAP(CHTMLEdDoc)
ON_COMMAND(ID_FILE_OPENURL, OnFileOpenurl)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CHTMLEdDoc construction/destruction
CHTMLEdDoc::CHTMLEdDoc()
{
m_bDoSaveOnDocCom = FALSE;
m_bCallNewDocument = FALSE;
m_bCallCloseDocument = FALSE;
}
CHTMLEdDoc::~CHTMLEdDoc()
{
}
/////////////////////////////////////////////////////////////////////////////
// CHTMLEdDoc diagnostics
#ifdef _DEBUG
void CHTMLEdDoc::AssertValid() const
{
CHtmlEditDoc::AssertValid();
}
void CHTMLEdDoc::Dump(CDumpContext& dc) const
{
CHtmlEditDoc::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CHTMLEdDoc commands
//We want the default functionality of CHtmlEditDoc::OnNewDocument(), but just need to update
//the view with the new document contents
BOOL CHTMLEdDoc::OnNewDocument()
{
//If the old document needs to be saved, and is waiting for a OnDocumentComplete,
//OnNewDocument waits for it to gets done
if(m_bDoSaveOnDocCom)
{
m_bCallNewDocument = TRUE;
return FALSE;
}
BOOL bRet = CHtmlEditDoc::OnNewDocument();
if (bRet)
{
// have to clear the source view too!
CMainFrame *pFrm = (CMainFrame*)AfxGetMainWnd();
if (pFrm)
{
CSourceView *pView = (CSourceView*)pFrm->GetSourceView();
if (pView)
{
pView->NewDocument();
pFrm->SwapView(ID_VIEW_WEB);
}
}
}
return bRet;
}
void CHTMLEdDoc::OnCloseDocument()
{
//If the old document needs to be saved, and is waiting for a OnDocumentComplete,
//OnCloseDocument waits for it to gets done
if(m_bDoSaveOnDocCom)
{
m_bCallCloseDocument = TRUE;
return;
}
CDocument::OnCloseDocument();
}
//We want the default functionality of CHtmlEditDoc::OnOpenDocument(lpszFileName), but just
//need to update the view with the opened document contents
BOOL CHTMLEdDoc::OnOpenDocument(LPCTSTR lpszFileName)
{
BOOL bRet = CHtmlEditDoc::OnOpenDocument(lpszFileName);
if (bRet)
{
// have to clear the source view too!
CMainFrame *pFrm = (CMainFrame*)AfxGetMainWnd();
if (pFrm)
{
CSourceView *pView = (CSourceView*)pFrm->GetSourceView();
if (pView)
{
pView->NewDocument();
pFrm->SwapView(ID_VIEW_WEB);
}
}
}
return bRet;
}
void CHTMLEdDoc::OnFileOpenurl()
{
CGetURL dlg;
if(IDOK==dlg.DoModal())
OpenURL(dlg.m_URL);
}
BOOL CHTMLEdDoc::IsModified()
{
//Whether in Source or Web view, whenever we edit, CDocument::SetModified get's called.
return CDocument::IsModified();
}
//We want the default functionality of CHtmlEditDoc::OnSaveDocument(), but need to update
//the web view with the contents of the source view before saving
BOOL CHTMLEdDoc::OnSaveDocument(LPCTSTR lpszFileName)
{
CMainFrame *pFrame = (CMainFrame*)AfxGetMainWnd();
ASSERT_VALID(pFrame);
if(pFrame->GetCurrentView()==ID_VIEW_SOURCE)
{
//UpdateView is asynchronous, so we wait for the CHTMLEdView::OnDocumentComplete event
//to occur which indicates that the view has been updated, before saving the document
CHTMLEdView* pWebView = (CHTMLEdView*)pFrame->GetWebView();
ASSERT_VALID(pWebView);
pWebView->UpdateView();
m_sSaveFileName = lpszFileName;
m_bDoSaveOnDocCom = TRUE;
}
else
{
//For web view, the document already contains the changes, so we directly save it
m_sSaveFileName = lpszFileName;
return SaveMyDocument();
}
return TRUE;
}
BOOL CHTMLEdDoc::SaveMyDocument()
{
return CHtmlEditDoc::OnSaveDocument(m_sSaveFileName);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -