wpdoc.cpp

来自「MFC编程实例」· C++ 代码 · 共 146 行

CPP
146
字号
#include "stdafx.h"
#include "WordPad.h"
#include "MainFrm.h"
#include "WPDoc.h"
#include "CntrItem.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

IMPLEMENT_DYNCREATE(CWordPadDoc, CRichEditDoc)

BEGIN_MESSAGE_MAP(CWordPadDoc, CRichEditDoc)
	//{{AFX_MSG_MAP(CWordPadDoc)
	//}}AFX_MSG_MAP
	ON_UPDATE_COMMAND_UI(ID_OLE_EDIT_LINKS, CRichEditDoc::OnUpdateEditLinksMenu)
	ON_COMMAND(ID_OLE_EDIT_LINKS, CRichEditDoc::OnEditLinks)
	ON_UPDATE_COMMAND_UI(ID_OLE_VERB_FIRST, CRichEditDoc::OnUpdateObjectVerbMenu)
END_MESSAGE_MAP()

CWordPadDoc::CWordPadDoc()
{
}

CWordPadDoc::~CWordPadDoc()
{
}

BOOL CWordPadDoc::OnNewDocument()
{
	if(!CRichEditDoc::OnNewDocument())return FALSE;

	return TRUE;
}

BOOL CWordPadDoc::DoSave(LPCTSTR lpszPathName, BOOL bReplace)
{
	CString newName=lpszPathName;
	CFileDialog	dlg(FALSE);
	int iBad;

	if(newName.IsEmpty())
	{
/*		CDocTemplate *pTemplate=GetDocTemplate();
		ASSERT(pTemplate != NULL);

		newName=m_strPathName;
		if(bReplace && newName.IsEmpty())
		{
			newName=m_strTitle;
			iBad=newName.FindOneOf(_T(" #%;/\\"));
			if(iBad != -1)newName.ReleaseBuffer(iBad);
		}
*/
		dlg.m_ofn.lpstrFilter=STRING_FILTER;
		dlg.m_ofn.nFilterIndex=1;
		if(dlg.DoModal() == IDOK)newName=dlg.GetPathName();
		else return FALSE;
		if(dlg.m_ofn.nFilterIndex == 1)m_bRTF=TRUE;
		else m_bRTF=FALSE;
	
		if(bReplace)
		{
			CString szFind;

			if(dlg.m_ofn.nFilterIndex == 1)
			{
				szFind=newName;
				szFind.MakeLower();
				iBad=szFind.Find(".txt");
				if(iBad != -1)newName.ReleaseBuffer(iBad);
				newName+=".rtf";
			}
			else
			{
				szFind=newName;
				szFind.MakeLower();
				iBad=szFind.Find(".rtf");
				if(iBad != -1)newName.ReleaseBuffer(iBad);
				newName+=".txt";
			}

		}
		else
		{
			if(dlg.m_ofn.nFilterIndex == 1)
			{
				newName+=".rtf";
			}
			else newName+=".txt";
		}
	}

	CWaitCursor wait;

	if(!OnSaveDocument(newName))
	{
		if(lpszPathName == NULL)
		{
			TRY
			{
				CFile::Remove(newName);
			}
			CATCH_ALL(e)
			{
				TRACE0("Warning: failed to delete file after failed SaveAs.\n");
			}
			END_CATCH_ALL
		}
		return FALSE;
	}
	if(bReplace)SetPathName(newName, TRUE);

	return TRUE;
}

CRichEditCntrItem *CWordPadDoc::CreateClientItem(REOBJECT* preo) const
{
	return new CWordPadCntrItem(preo, (CWordPadDoc*) this);
}

void CWordPadDoc::Serialize(CArchive &ar)
{
	if(ar.IsStoring())
	{
	}
	else
	{
	}
	CRichEditDoc::Serialize(ar);
}

#ifdef _DEBUG
void CWordPadDoc::AssertValid() const
{
	CRichEditDoc::AssertValid();
}

void CWordPadDoc::Dump(CDumpContext &dc) const
{
	CRichEditDoc::Dump(dc);
}
#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?